Python中的Count and Say
這裡我們將瞭解Count and Say序列。這是一個序列,其部分項如下所示:
- 1
- 11
- 21
- 1211
- 111221
字串將按如下方式讀取
- 1(一)
- 11(一個1)所以讀取前面的1,並說“一個1”
- 21(兩個1)所以讀取前面的11,並說“兩個1”
- 1211(一個2一個1)所以讀取前面的21,並說“一個2一個1”
- 111221(一個1一個2兩個1)所以讀取前面的1211,並說“一個1一個2兩個1”
假設我們有一個數字n,1 <= n < = 30,那麼我們必須生成第n項。
為了解決這個問題,我們將遵循以下方法:
- 設定s := “1”
- 如果n = 1,則返回s
- 對於i := 2到n + 1
- j := 0,temp := “”,curr = “”和count := 0
- 當j < s的長度時,執行
- 如果curr是“”,則curr := s[j],count := 1並將j增加1
- 否則如果curr是s[j],則將count和j增加1
- 否則temp := temp + count作為字串+ curr,curr = “”,count := 0
- temp := temp + count作為字串+ curr
- 返回s
讓我們看看以下實現以獲得更好的理解:
示例
class Solution(object): def countAndSay(self, n): """ :type n: int :rtype: str """ s = "1" if n == 1: return s for i in range(2,n+1): j = 0 temp = "" curr = "" count = 0 while j<len(s): #print(curr,count) if curr =="": #print(curr) curr=s[j] count=1 j+=1 elif curr == s[j]: #print(curr) count+=1 j+=1 else: #print(count,curr) temp+= str(count) + curr curr="" count = 0 #print(temp) temp+=str(count) + curr s=temp return s ob1 = Solution() print(ob1.countAndSay(6))
輸入
print(ob1.countAndSay(6))
輸出
312211
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP