青训4_1111_01 小D的 abc 变换问题(特定值变更可用字典)
青训4_1111_01 小D的 abc 变换问题(特定值变更可用字典)
思路:按照初始字符串的长度进行循环取数变更到新数组。长度为6,则为 1,7。【此种也可用次数循环_长度即次数,而非字符所在数据位置循环__左闭右开】for char in current
问题描述
小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'
示例
def solution(s: str, k: int) -> str:
# write code here
return ""
if __name__ == '__main__':
print(solution("abc", 2) == 'caababbcbcca')
print(solution("abca", 3) == 'abbcbccabccacaabcaababbcabbcbcca')
print(solution("cba", 1) == 'abcabc')
思路:
做判空处理
按照初始字符串的长度进行循环取数变更到新数组。长度为6,则为 1,7。【此种也可用次数循环_长度即次数,而非字符所在数据位置循环__左闭右开】for char in current
按照k次,每一次都获取长度,进行遍历
这边初学python的同学可以使用key value的字典。
答案
def solution(s: str, k: int) -> str:
if not s or k < 0:
return ""
# 定义变换规则字典
transform = {
'a': 'bc',
'b': 'ca',
'c': 'ab'
}
# 对字符串进行k次变换
current = s
for _ in range(k):
# 在每次迭代中构建新字符串
next_str = ""
for char in current:
next_str += transform[char]
current = next_str
return current
if __name__ == '__main__':
print(solution("abc", 2) == 'caababbcbcca')
print(solution("abca", 3) == 'abbcbccabccacaabcaababbcabbcbcca')
print(solution("cba", 1) == 'abcabc')