美文网首页
38. 报数

38. 报数

作者: 好吃红薯 | 来源:发表于2019-05-15 16:42 被阅读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
    

    相关文章

      网友评论

          本文标题:38. 报数

          本文链接:https://www.haomeiwen.com/subject/cgqmaqtx.html