问题描述
小D拿到了一个仅由 "abc" 三种字母组成的字符串。她每次操作会对所有字符同时进行以下变换:
- 将
'a'变成'bc' - 将
'b'变成'ca' - 将
'c'变成'ab'
小D将重复该操作 k 次。你的任务是输出经过 k 次变换后,得到的最终字符串。
例如:对于初始字符串 "abc",执行 2 次操作后,字符串将变为 "caababbcbcca"。
问题理解
有一个由 'a', 'b', 'c' 组成的字符串 s,需要对这个字符串进行 k 次变换。每次变换的规则如下:
'a'变成'bc''b'变成'ca''c'变成'ab'
数据结构选择
由于每次变换都会生成一个新的字符串,我们可以使用一个字符串来存储每次变换后的结果。
解题步骤
-
函数定义与初始化:定义了一个名为 solution 的函数,它接受两个参数:s 是仅由
"abc"三种字母组成的需要变换的原始字符串,k 是变换的次数,函数的返回值是经过 k 次变换后的字符串。从原始字符串s开始。 -
循环执行
k次:使用for循环,循环变量在这里使用_,表示我们不需要在循环体内部使用这个变量来做任何特定的操作,只是单纯根据循环次数来执行指定次数的操作。对于当前字符串中的每个字符,根据变换规则生成新的字符串。 -
单次变换逻辑:在每次循环中,首先创建一个空字符串 new_s,用于存储本次变换后生成的结果字符串。然后遍历原始字符串 s 中的每个字符 char,根据字符的值按照给定的变换规则将相应的字符串添加到 new_s 中。例如,如果字符是 'a',就将 'bc' 添加到 new_s。- 对于遍历到的每个字符
char,根据其具体的值按照给定的变换规则进行处理:- 如果字符
char是'a',那么按照变换规则,'a'要变成'bc',所以将'bc'添加到new_s字符串中。 - 如果字符
char是'b',依据规则'b'变成'ca',此时就把'ca'添加到new_s字符串中。 - 如果字符
char是'c',因为规则规定'c'变成'ab',所以将'ab'添加到new_s字符串中。
- 如果字符
-
更新当前字符串并继续循环:在完成对当前字符串中所有字符的一次变换后,也就是内层
for循环结束后,我们已经将按照规则变换后的所有字符依次添加到了new_s字符串中,此时new_s就是本次变换操作后得到的新字符串。然后,将new_s赋值给当前字符串(初始为s,每次循环更新),这样当前字符串就更新为本次变换后的状态,准备进行下一次的变换操作循环。 -
返回结果:返回经过
k次变换后的字符串s。
代码框架
def solution(s: str, k: int) -> str:
for _ in range(k):
new_s=""
for char in s:
if char == "a":
new_s += "bc"
elif char == "b":
new_s += "ca"
elif char == "c":
new_s += "ab"
s = new_s
return s
if __name__ == '__main__':
print(solution("abc", 2) == 'caababbcbcca')
print(solution("abca", 3) == 'abbcbccabccacaabcaababbcabbcbcca')
print(solution("cba", 1) == 'abcabc')