1. 程式人生 > >38.報數

38.報數

Problem

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

  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”

too young 思路

題我是看懂了,我甚至想把這30個手動都給寫出來,不然真不知道要怎麼寫,遞迴嗎?把第一個輸入之後每個按照前一個來計算?

dalao 思路-24ms

找了一個和我too young思路差不多的大佬程式碼

class Solution(object):
    def countAndSay(self, n):
        s = '1'   #初始化第一個數字    
        for i in range(n-1):  #n-1個數      
            temp = ''   #一個空數列
num = s[0] #s的第一位數字 count = 0 #當前數字的個數 for j in s: #遍歷s中的每個字母 if num == j: #如果這個字母和num一樣 count += 1 #計數+1 else: temp += str(count)+str(num) #存下“幾”個“什麼數” num =
j #num改成當前數字 count = 1 #計數回到1 temp += str(count)+str(num) #加的是最後一個 s = temp return s