📜  门| GATE CS Mock 2018 |设置 2 |问题 11(1)

📅  最后修改于: 2023-12-03 15:42:13.334000             🧑  作者: Mango

GATE CS Mock 2018 | Setting 2 | Question 11

这是一个关于计算机科学GATE试题模拟。本题属于设置2中的第11题。

题目描述

给定一个仅包含大写英文字母的字符串,在每个字符前后插入字符'',并将字符串中出现的所有相邻的''替换为'$'。例如,字符串"HELLO"将变成"*H*E*L*L*O*",然后变成"*H$E$L$L$O*"

编写一个函数,接受一个字符串并返回变换后的字符串。

函数签名
def transform_string(s: str) -> str:
    pass
输入格式
  • 一个仅包含大写英文字母的字符串s
输出格式
  • 返回变换后的字符串
示例
示例1

输入

s = "HELLO"

输出

"*H$E$L$L$O*"
解题思路

本题需要进行字符串操作,经过分析,我们可以先在字符串的首尾插入''来满足每一个字符前后都有''的限制条件。

接下来,需要将所有相邻的'*'替换为'$'。这一步操作可以直接使用Python的字符串替换函数replace()来实现。

代码实现

下面是对题目的解答代码,附带详细注释:

def transform_string(s: str) -> str:
    # 在字符串首尾加上'*',使每个字符前后都有'*'
    s = '*' + '*'.join(s) + '*'

    # 将相邻的'*'替换为'$'
    s = s.replace('*$', '$*').replace('**', '*')

    return s
时间复杂度

本算法需要进行字符串操作,时间复杂度为O(n),其中n为字符串长度。