leetcode 38 报数
z

报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

  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(1 ≤ n ≤ 30),输出报数序列的第 n 项。

注意:整数顺序将表示为一个字符串。

示例 1:

输入: 1
输出: “1”
示例 2:

输入: 4
输出: “1211”


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution(object):
def countAndSay(self, n):
"""
:type n: int
:rtype: str
"""
lastWord = '1'
for i in range(1, n):
j = 0
curWord = ''
cnt = 0
while j < len(lastWord):
c = lastWord[j]
cnt = 1
j = j+1
while j<len(lastWord) and lastWord[j] == c:
cnt += 1
j += 1
curWord += str(cnt) + str(c)
lastWord = curWord

return lastWord