【leetcode 簡單】第十二題 報數

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

1.     1
2.     11
3.     21
4.     1211
5.     111221

1 被讀做  "one 1"  ("一個一") , 即 11
11 被讀做 "two 1s" ("兩個一"), 即 21
21 被讀做 "one 2",  "one 1" ("一個二" ,  "一個一") , 即 1211code

給定一個正整數 n ,輸出報數序列的第 n 項。blog

注意:整數順序將表示爲一個字符串。字符串

示例 1:io

輸入: 1
輸出: "1"

示例 2:class

輸入: 4
輸出: "1211"


class Solution: def countAndSay(self, n): """ :type n: int :rtype: str """
        if not n : return False if n < 1:return False if n == 1: return '1'
        if n == 2: return '11' start = '11' 
        for i in range(3,n+1):  #從第3次開始循環至數字n-1結束
            tmp = ''            
            index = 0           
            for i in range(len(start)-1):   #循環到 start字符串長度減一結束,防止下標溢出
                if start[i] == start[i+1]: index += 1               
                else: index +=1               
                    tmp += str(index)+start[i]  #str(index) ==1 ,start[i] 當前數值
                    index = 0                 #index 歸零
 index +=1 tmp += str(index) + start[i+1]  #根據前面的index來判斷最後一位是否和前一位相等,相等就加index+1,不等就是0+1,而後加上上一次循環字符串的最後一位
            start = tmp          #內循環結束後,爲下次循環的start賦值
        return tmp
相關文章
相關標籤/搜索