Python程式:計算使用語法規則可以生成的字串數量
假設我們有一個數字n,我們需要找到可以使用以下規則生成的長度為n的字串數量:
每個字元都是小寫母音字母 [a, e, i, o, u]
"a" 之後只能跟一個 "e"
"e" 之後只能跟 "a" 或 "i"
"i" 之後不能再跟 "i"
"o" 之後只能跟 "i" 或 "u"
"u" 之後只能跟一個 "a"
如果結果非常大,則將結果模 10^9 + 7。
因此,如果輸入是 n = 2,則輸出將為 10,因為我們可以生成以下兩個字母的字串:["ae", "ea", "ei", "ia", "ie", "io", "iu", "oi", "ou", "ua"]
為了解決這個問題,我們將遵循以下步驟:
m = 10^9 + 7
如果 n 等於 0,則
返回 0
定義五個變數 a、e、i、o、u,初始值都為 1
對於範圍為 0 到 n-1 的 _,執行:
a := e + i + u
e := a + i
i := e + o
o := i
u := i + o
返回 (a + e + i + o + u) mod m
讓我們來看下面的實現,以便更好地理解:
示例
class Solution: def solve(self, n): m = (10 ** 9 + 7) if n == 0: return 0 a = e = i = o = u = 1 for _ in range(n-1): a, e, i, o, u = e+i+u, a+i, e+o, i, i+o return (a + e + i + o + u) % m ob = Solution() print(ob.solve(3))
輸入
3
輸出
19
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP