The count-and-say sequence is the sequence of integers with the first five terms as following:
1
11
21
1211
111221
1 is read off as "one 1" or 11.Given an integer n where 1 ≤ n ≤ 30, generate the nth term of the count-and-say sequence.
Note: Each term of the sequence of integers will be represented as a string.
Example 1:
Input: 1
Output: "1"
Example 2:
Input: 4
Output: "1211"
注意,这个题的题干比较难理解,大概意思是第一个数是1,然后记录前一个数的读法(读作一个一),所以第二个记录为11,那第三个就是对11的读法就是2个1,记录为21,第四个就是对21的读法,1个2和1个1,记录为1211,后面以此类推。
class Solution:
def countAndSay(self, n: int) -> str:
if n == 1:
return "1"
last = self.countAndSay(n-1)
new = ""
idx = 0
char = last[idx]
count = 0
while(idx < len(last)):
if last[idx] != char:
new = new + str(count) + char
char = last[idx]
count = 1
else:
count += 1
idx += 1
new = new + str(count) + char
return new
原文:https://www.cnblogs.com/mrdoghead/p/11869786.html