1. 程式人生 > >Leetcode 38.報數(Python3)

Leetcode 38.報數(Python3)

38.報數

報數序列是一個整數序列,按照其中的整數的順序進行報數,得到下一個數。其前五項如下:

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"

 

程式碼:

#count-and-say
class Solution:
    def countAndSay(self, n):
        """
        :type n: int
        :rtype: str
        """
        if n == 1:
            return '1'
        s = '1'
        for i in range(2,n + 1):
            res = ''
            count = 1
            for j in range(1,len(s)):
                if s[j - 1] == s[j]:
                    count += 1
                else:
                    res += str(count) + s[j - 1]
                    count = 1
            res += str(count) + s[-1]
            s = res
        return s

 

連結:

https://leetcode-cn.com/problems/count-and-say/