问题描述
小D拿到了一个仅由 "abc" 三种字母组成的字符串。她每次操作会对所有字符同时进行以下变换:
- 将
'a'变成'bc' - 将
'b'变成'ca' - 将
'c'变成'ab'
小D将重复该操作 k 次。你的任务是输出经过 k 次变换后,得到的最终字符串。
例如:对于初始字符串 "abc",执行 2 次操作后,字符串将变为 "caababbcbcca"。
测试样例
样例1:
输入:
s = "abc", k = 2
输出:'caababbcbcca'
样例2:
输入:
s = "abca", k = 3
输出:'abbcbccabccacaabcaababbcabbcbcca'
样例3:
输入:
s = "cba", k = 1
输出:'abcabc'
思路
这个题要求连续进行某变化k次,因此构造外层循环for _ in range(0,k): 内层循环遍历s进行依次处理。具体处理过程如下: 1,用ns储存一个空字符串 2,对于s里面的每一个字符,按照对应要求添加到ns里面 3,每次循环完成,更新s和ns
代码
def solution(s: str, k: int) -> str:
ns = ""
for _ in range(0, k):
for char in s:
if char == 'a':
ns += "bc"
if char == 'b':
ns += "ca"
if char == 'c':
ns += "ab"
# 更新s 和 ns
s = ns
ns = ""
return s
if __name__ == '__main__':
print(solution("abc", 2) == 'caababbcbcca')
print(solution("abca", 3) == 'abbcbccabccacaabcaababbcabbcbcca')
print(solution("cba", 1) == 'abcabc')
解释
这段代码定义了一个名为 solution 的函数,接收两个参数:一个字符串 s 和一个整数 k。函数的目的是根据特定规则对字符串进行转换,重复进行 k 次。以下是代码的逐步解析:
-
初始化:函数内部定义了一个空字符串
ns,用来存储每轮转换后生成的新字符串。 -
外层循环:
for _ in range(0, k):表示这段转换操作需要运行k次。 -
内层循环:
for char in s:遍历当前字符串s中的每个字符char。 -
字符转换:
- 如果字符是
'a',则在ns中添加'bc'。 - 如果字符是
'b',则在ns中添加'ca'。 - 如果字符是
'c',则在ns中添加'ab'。
- 如果字符是
-
更新字符串:完成内层循环后,使用新的字符串
ns来替换原来的字符串s,同时重置ns为一个空字符串,为下一个外层循环做准备。 -
返回结果:最终返回转换后的字符串
s,经过k次转换。
测试部分
在 if __name__ == '__main__': 下面,代码用一系列测试来检查 solution 函数的输出是否符合预期。这些测试对函数的调用与返回值进行了比较,确认结果是否正确。
总结
这个函数的主要功能是对输入字符串按照特定规则进行 k 次的字符替换。具体的替换规则如下:
'a'被替换为'bc''b'被替换为'ca''c'被替换为'ab'