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

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):
        \"\"\"
        :type n: int
        :rtype: str
        \"\"\"
        if(n == 1): return \"1\"
        if(n == 2): return \"11\"
        pre = \"11\"
        for i in range(3, n + 1):
            result = \"\"
            num = 1
            length = len(pre)
            for j in range(1, length):
                if(pre[j - 1] == pre[j]):
                    num += 1 
                else:
                    result += str(num) + pre[j - 1]
                    num = 1
            result += str(num) + pre[length - 1]
            pre = result
        return result

 

收藏 打印