版权声明:随意取用(´・ω・`) / https://blog.csdn.net/square_zou/article/details/84071635
Problem
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:
-
1
-
11
-
21
-
1211
-
111221
1 被读作 “one 1” (“一个一”) , 即 11。
11 被读作 “two 1s” (“两个一”), 即 21。
21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。
给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。
注意:整数顺序将表示为一个字符串。
示例 1:
输入: 1
输出: “1”
示例 2:
输入: 4
输出: “1211”
too young 思路
题我是看懂了,我甚至想把这30个手动都给写出来,不然真不知道要怎么写,递归吗?把第一个输入之后每个按照前一个来计算?
dalao 思路-24ms
找了一个和我too young思路差不多的大佬代码
class Solution(object):
def countAndSay(self, n):
s = '1' #初始化第一个数字
for i in range(n-1): #n-1个数
temp = '' #一个空数列
num = s[0] #s的第一位数字
count = 0 #当前数字的个数
for j in s: #遍历s中的每个字母
if num == j: #如果这个字母和num一样
count += 1 #计数+1
else:
temp += str(count)+str(num) #存下“几”个“什么数”
num = j #num改成当前数字
count = 1 #计数回到1
temp += str(count)+str(num) #加的是最后一个
s = temp
return s