1. 程式人生 > >LeetCode題目--報數(python實現)

LeetCode題目--報數(python實現)

題目

報數

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

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"

python程式碼實現:

class Solution:
    def countAndSay(self, n):
        """
        :type n: int
        :rtype: str
        """
        if n==1:
            return  str(1)
        a="11"
        l=1
        while n>2:
            s=""
            for i in range(1,len(a)):
                n1=a[i]
                if n1 == a[i-1]:
                    l+=1
                else:
                    s+=s.join(str(l))
                    s+=s.join(str(a[i-1]))
                    l = 1
                if i == len(a) - 1:
                    s+=s.join(str(l))
                    s+=s.join(str(a[i]))

            l=1
            n-=1
            a=s
        return  a