题目
思路分析
题目要求:根据上一个数,按照规律,依次报数
str1保存所有序列对应的结果,其实就是求1到n的str1数组值。
有点像动态规划,根据前一个结果求当下的结果。
代码展示
class Solution:
def countAndSay(self, n: int) -> str:
str1 = []
#str1保存所有序列对应的结果,其实就是求1到n的str1数组值。
#有点像动态规划,根据前一个结果求当下的结果。
str1.append('0')
str1.append('1')
# str1.append('11')
if n==1:
return str1[1]
i = 1
#不断求出temp加入str1的数组中
while i<=n:
print(str1)
temp = ''
count = 0
flag = str1[i][0]
for j in str1[i]:
if j == flag:
count+=1
else:
#个数
temp+=str(count)
#值
temp+=str(flag)
count=1
flag = j
temp+=str(count)
temp+=str(flag)
str1.append(temp)
i+=1
# print(str1)
return str1[i-1]
if __name__ == "__main__":
a = Solution()
print(a.countAndSay(5))