38. 报数

2019-05-15  本文已影响0人  好吃红薯

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

  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"

思路:模拟过程,递归

class Solution:
    def countAndSay(self, n: int) -> str:        
        def Get(t):
            re = ""
            anchor = str(t)[0]  #指向同样数字,
            l = 0               #计数当前
            for i in range(len(str(t))):
                if str(t)[i] == anchor:
                    l+=1
                elif l==1:
                    re+="1"+anchor
                    l=1
                    anchor = str(t)[i]
                else:
                    re += str(l) + anchor
                    l = 1
                    anchor = str(t)[i]       
            re+=str(l) + anchor
            return re
        
        res = "1"
        for i in range(n-1):
            res = Get(res)

        
        return res
上一篇下一篇

猜你喜欢

热点阅读