38.報數
阿新 • • 發佈:2018-11-16
Problem
報數序列是一個整數序列,按照其中的整數的順序進行報數,得到下一個數。其前五項如下:
-
1
-
11
-
21
-
1211
-
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