題解:
class solution:
def countandsay(self, n: int) -> str:
if n == 1:
return '1'
new_str = ''
last_str = self.countandsay(n-1) # 獲取上次的報數
cur = last_str[0] # 當前要統計的字元,初始值為last_str的首字元
cur_t = 0 # 當前字元出現的次數
for i in last_str:
if i == cur:
# 如果相等,則計數+1
cur_t += 1
else:
# 否則先報一次數,然後重新初始化開始統計
new_str +=str(cur_t) + cur
cur = i
cur_t = 1
# 迴圈結束後,還要再報一次,因為如果最後是以if條件退出迴圈的,最後幾個相同的字元並未報出來
new_str += str(cur_t) + cur
return new_str
leetcode38 外觀數列
外觀數列 是乙個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。前五項如下 1.1 2.11 3.21 4.1211 5.111221 1 被讀作 one 1 乙個一 即 11。11 被讀作 two 1s 兩個一 即 21。21 被讀作 one 2 one 1 乙個二 乙個一 即 12...
LeetCode38 外觀數列
題目描述 外觀數列 是乙個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。前五項如下 1.1 2.11 3.21 4.1211 5.111221 1 被讀作 one 1 乙個一 即 11。11 被讀作 two 1s 兩個一 即 21。21 被讀作 one 2 one 1 乙個二 乙個一...
leetcode 38 外觀數列
38.外觀數列 給定乙個正整數 n 1 n 30 輸出外觀數列的第 n 項。注意 整數序列中的每一項將表示為乙個字串。外觀數列 是乙個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。前五項如下 1 11 21 1211 111221 第一項是數字 1 描述前一項,這個數是 1 即 乙個...