報數序列是指一個整數序列,按照其中的整數的順序進行報數,得到下一個數。其前五項如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 1 被讀作 "one 1" ("一個一") , 即 11。 11 被讀作 "two 1s" ("兩個一"), 即 21。 21 被讀作 "one ...
報數序列是指一個整數序列,按照其中的整數的順序進行報數,得到下一個數。其前五項如下:
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 ,輸出報數序列的第 n 項。
註意:整數順序將表示為一個字元串。
示例 1:
輸入: 1 輸出: "1"
示例 2:
輸入: 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