leetcode刷題--Count and Say
題目:輸入一個階數n,輸出一個該階對應的字串s。這個字串由上一介輸出的字串處理得到。具體規則是:n=1時輸出字串1;n=2時,數上次字串中的數值個數,因為上次字串有1個1,所以輸出11;n=3時,由於上次字元是11,有2個1,所以輸出21;n=4時,由於上次字串是21,有1個2和1個1,所以輸出1211。依次類推。
這道題依然難度是easy,陷阱在於不是求不同數字字元出現的次數,而是求連續相同字元的出現次數。解題可以用遞迴的思路來寫,不過我沒修改過,不是尾遞迴的形式(python反正也沒有尾遞迴優化)。
思路如下:
遞迴思路:當n=1時返回字串“1”,其他呼叫前一階的返回字串形成遞迴
求連續相同字元出現次數:基本是C語言的思路--設定計數器count和臨時變數same,same儲存當前計數的數字,count記錄當前數字的重複次數。噹噹前計數的數字與same不同時更新結果字串。更新same的值,count值歸位。
需要注意開頭和結尾處的處理
程式碼如下:
class Solution:
# @param {integer} n
# @return {string}
def cands(self,n):
if n==1:
st="1"
return st
else:
st=self.cands(n-1)
count=1
same=''
se=''
for i in range(len(st)):
if same!=st[i]:
if same !='':
se+=str(count)
se+=same
same=st[i]
count=1
else:
count+=1
se+=str(count)
se+=same
return se
def countAndSay(self, n):
return self.cands(n)
ps:不要吐槽python寫的像C啦。。。以後想起來更好的方法會更新噠
相關文章
- Leetcode Count and SayLeetCode
- LeetCode:Count and SayLeetCode
- Leetcode 38 Count and SayLeetCode
- Leetcode-Count and SayLeetCode
- Count and Say leetcode javaLeetCodeJava
- leetcode刷題--Count PrimesLeetCode
- [LeetCode] Count and Say 計數和讀法LeetCode
- 【LeetCode 38_字串_算術運算】Count and SayLeetCode字串
- LeetCode刷題整理LeetCode
- leetcode刷題(一)LeetCode
- LeetCode刷題 堆LeetCode
- LeetCode 刷題—樹LeetCode
- LeetCode 刷題指南(一):為什麼要刷題LeetCode
- LeetCode 刷題筆記LeetCode筆記
- leetcode刷題筆記LeetCode筆記
- LeetCode刷題記錄LeetCode
- 如何使用leetcode刷題LeetCode
- leetcode刷題--Majority ElementLeetCode
- leetcode刷題--Reverse BitsLeetCode
- leetcode刷題--Rotate ArrayLeetCode
- Leetcode刷題分類LeetCode
- Leetcode刷題準備LeetCode
- LeetCode刷題—陣列LeetCode陣列
- Leetcode刷題——求眾數LeetCode
- leetcode刷題筆記605LeetCode筆記
- Leetcode刷題系列彙總LeetCode
- leetcode刷題--Happy NumberLeetCodeAPP
- leetcode刷題--Number of 1 BitsLeetCode
- leetcode刷題記錄 661~LeetCode
- LeetCode刷題之第701題LeetCode
- Leetcode已刷題目題解彙總LeetCode
- leetcode排序專題演算法刷題LeetCode排序演算法
- 用Rust刷leetcode第十題RustLeetCode
- 用Rust刷leetcode第八題RustLeetCode
- 用Rust刷leetcode第九題RustLeetCode
- 用 Rust 刷 leetcode 第五題RustLeetCode
- 用 Rust 刷 leetcode 第七題RustLeetCode
- 用 Rust 刷 leetcode 第六題RustLeetCode