Python 中查詢觀測數列第 n 項的程式
假設我們有一個數字 n,我們需要生成“觀測數列”中的第 n 項。這是一個序列,其一些項如下所示:
- 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
- 如果 curr 為空字串,則
- temp := temp + count 作為字串 + curr
- 返回 s
讓我們看看以下實現以更好地理解:
示例
class Solution(object): def solve(self, n): s = "1" if n == 1: return s for i in range(2,n+1): j = 0 temp = "" curr = "" count = 0 while j <len(s): if curr =="": curr=s[j] count=1 j+=1 elif curr == s[j]: count+=1 j+=1 else: temp+= str(count) + curr curr="" count = 0 temp+=str(count) + curr s=temp return s ob = Solution() n = 5 print(ob.solve(n))
輸入
5
輸出
"111221"
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP