leetcode第38题:报数
这是一道简单题,但是我做了很久,主要难度在读题和理解题上。
思路:给定一个数字,返回这个数字报数数列。我们可以通过从1开始,不断扩展到n的数列。数列的值为前一个数列的count+num,所以我们不断叠加来完成。
class Solution:
def countAndSay(self, n: int) -> str:
# 第一个值直接赋予
pre_num = "1"
for i in range(1,n):
# 用next_num 记录当前序列,num为前一个序列的第一个值
next_num,num,count="",pre_num[0],1
for j in range(1,len(pre_num)):
# 如果num和前一个序列的下一个值相等,则将count +1
if num==pre_num[j]:
count+=1
else:
# 如果不等,将当前count +num 写入next_num,并将count置为1,
# num取 当前pre_num的值
next_num += str(count) + num
count =1
num =pre_num[j]
next_num += str(count) + num
pre_num = next_num
return pre_num