一、问题描述
报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:
1. 1 2. 11 3. 21 4. 1211 5. 111221
1
被读作 "one 1"
("一个一"
) , 即 11
。11
被读作 "two 1s"
("两个一"
), 即 21
。21
被读作 "one 2"
, "one 1"
("一个二"
, "一个一"
) , 即 1211
。
给定一个正整数 n ,输出报数序列的第 n 项。
注意:整数顺序将表示为一个字符串。
示例 1:
输入: 1 输出: "1"
示例 2:
输入: 4 输出: "1211"
二、代码和思路
1.题目要求是返回第n个,则从‘1’开始再读n-1次,返回最后读的结果
2.代码核心部分是根据str_orignal读出str_next,首先遍历str_orignal,找其中的连续元素,即几个这样的元素str_next += str(count)+str_orignal[j]用这个公式生成,遍历完str_orignal生成的str_next ,作为下一次循环的str_orignal输入
class Solution(object):def countAndSay(self, n):
"""
:type n: int
:rtype: str
"""
str_orignal='1'
for i in range(1,n):
str_next=''
j,m=0,len(str_orignal)
while j<m:
count=1
while j<m-1 and str_orignal[j+1]==str_orignal[j]:
j += 1
count += 1
str_next += str(count)+str_orignal[j]
j += 1
str_orignal=str_next
return str_orignal
三、运行结果