问题描述
小D拿到了一个仅由 "abc" 三种字母组成的字符串。她每次操作会对所有字符同时进行以下变换:
- 将
'a'变成'bc' - 将
'b'变成'ca' - 将
'c'变成'ab'
小D将重复该操作 k 次。你的任务是输出经过 k 次变换后,得到的最终字符串。
例如:对于初始字符串 "abc",执行 2 次操作后,字符串将变为 "caababbcbcca"。
题目解析
在我自己刷了一些题之后,发现豆包的一些简单题还是非常适合咱们新手的,因为我是一个没有接触过这类东西的,只学过一些c语言,可能和参加青训营的一些小伙伴一样才开始学习基本的算法。我也只能讲讲一些入门级别的题目了,这道题在看到的时候没有仔细读,以为每次只变换一个字母,导致浪费了一些时间,写了几行错误的代码,大家做题要认真理解哦,别学我啦,在看到每次变换都会将三个字母同时变换,我想许多同学和我一样,会选择一个遍历来进行变换,通过一个循环,将字符串所有的元素拿出来进行变换,想到这里的时候,思路大概有一些了,那应该怎么确定我遍历的是'a','b'还是'c'呢,作者比较迟钝,就只想到了一种,通过在循环遍历的时候加入if语句进行字符的判断,想到这的时候我就开始着手写了:
for index, i in enumerate(s):
if i == 'a':
s[index]='bc'
elif i == 'b':
s[index]='ca'
else:
s[index]='ab'
return s
结果写完发现,这不乱写吗,偏离主题了,只能变换一次不说,都有语法错误了,于是我赶紧删掉,构思了一下,我需要拿一个列表来存储我变换后的字符,并且,需要再来一次循环来表达我变换的次数,于是我在原有基础上改进了我的代码,如下:
step = 0
while step < k:
news = []
for i in s:
if i == 'a':
news.append('bc')
elif i == 'b':
news.append('ca')
else:
news.append('ab')
s = ''.join(news)
step += 1
return s
这样就很好看了,通过定义一个step来记录变换次数,然后用while循环进行变换,在while循环内部我们顶一个new-s用来接收变换后的字符,当然这个是列表的形式,我们需要在最后将它用python的变化操作转化为字符串,这样才能运行通过,我询问过豆包,最开始它给的是一个动态规划的算法,但是我有点看不懂,于是我让他用最简单的方法写了一下,跟我的代码差不多,赞赞小豆包,越来越灵活聪明了嘞。
结语
在这几天的豆包MarsCode的刷题和学习中,自己每天都在进步欸,也和许多相同的伙伴交流问题,希望以后 的进步能在豆包和字节的协助下越来越大。第二次发文哈哈,只能发些简单题解析咯,谢谢支持