38. Count and Say
The count-and-say sequence is the sequence of integers with the first five terms as following:
1. 1 2. 11 3. 21 4. 1211 5. 111221
1
is read off as "one 1"
or 11
.11
is read off as "two 1s"
or 21
.21
is read off as "one 2
, then one 1"
or 1211
.
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',我们在输入2时第一个字符串里只有1个'1',输出'11'。第二个字符串中相邻且相同的'1'有两个,输入n=3则输出'21'。第三个字符串中有1个'2'、1个'1',输入n=4则输出'1211'。
class Solution:
def countAndSay(self, n: int) -> str:
ans = ['1']
j = 1
while j < n:
new_ans = []
i = 0
while i < len(ans):
time = 1
while i + 1 < len(ans) and ans[i+1] == ans[i]:
time += 1
i += 1
time = str(time)
new_ans.append(time)
new_ans.append(ans[i])
i += 1
ans = new_ans
j += 1
tmp = ''.join(ans)
return tmp