青训4_1111_01 小D的 `abc` 变换问题(特定值变更可用字典)| 豆包MarsCode AI刷题

114 阅读2分钟

青训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')