题目
给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串:
字符串中的每个字符都应当是小写元音字母(‘a’, ‘e’, ‘i’, ‘o’, ‘u’)
每个元音 ‘a’ 后面都只能跟着 ‘e’
每个元音 ‘e’ 后面只能跟着 ‘a’ 或者是 ‘i’
每个元音 ‘i’ 后面 不能 再跟着另一个 ‘i’
每个元音 ‘o’ 后面只能跟着 ‘i’ 或者是 ‘u’
每个元音 ‘u’ 后面只能跟着 ‘a’
由于答案可能会很大,所以请你返回 模 10^9 + 7 之后的结果。
示例 1:
输入:n = 1
输出:5
解释:所有可能的字符串分别是:“a”, “e”, “i” , “o” 和 “u”。
示例 2:
输入:n = 2
输出:10
解释:所有可能的字符串分别是:“ae”, “ea”, “ei”, “ia”, “ie”, “io”, “iu”, “oi”, “ou” 和 “ua”。
示例 3:
输入:n = 5
输出:68
提示:
1 <= n <= 2 * 10^4
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-vowels-permutation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
本来想用最笨的方法,从1算到n试试,没想到居然过了。。。。这个如果没记错的话,组合数学可以把这题转化成一个公式,奈何本人是学渣,算不来。
遇到的问题
无
代码
class Solution:
def countVowelPermutation(self, n: int) -> int:
a=e=i=o=u=1
la=le=li=lo=lu=1
for i in range(n-1):
a=le+li+lu
e=la+li
i=le+lo
o=li
u=li+lo
la=a
le=e
li=i
lo=o
lu=u
count=(a+e+i+o+u)%1000000007
return count
结果
通过 248 ms 13.6 MB
结论
还是太菜