1220. Count Vowels Permutation

87 篇文章 0 订阅

Given an integer n, your task is to count how many strings of length n can be formed under the following rules:

  • Each character is a lower case vowel ('a''e''i''o''u')
  • Each vowel 'a' may only be followed by an 'e'.
  • Each vowel 'e' may only be followed by an 'a' or an 'i'.
  • Each vowel 'i' may not be followed by another 'i'.
  • Each vowel 'o' may only be followed by an 'i' or a 'u'.
  • Each vowel 'u' may only be followed by an 'a'.

Since the answer may be too large, return it modulo 10^9 + 7.

 

Example 1:

Input: n = 1
Output: 5
Explanation: All possible strings are: "a", "e", "i" , "o" and "u".

Example 2:

Input: n = 2
Output: 10
Explanation: All possible strings are: "ae", "ea", "ei", "ia", "ie", "io", "iu", "oi", "ou" and "ua".

Example 3: 

Input: n = 5
Output: 68

 

Constraints:

  • 1 <= n <= 2 * 10^4

思路:DP,注意  followed by 的含义

class Solution(object):
    def countVowelPermutation(self, n):
        """
        :type n: int
        :rtype: int
        """
        mod=int(1e9+7)
        dp=[[0,0,0,0,0] for _ in range(n+1)]
        dp[1]=[1,1,1,1,1]
        for i in range(2,n+1):
            dp[i][0]=dp[i-1][1]+dp[i-1][2]+dp[i-1][4]
            dp[i][1]=dp[i-1][0]+dp[i-1][2]
            dp[i][2]=dp[i-1][1]+dp[i-1][3]
            dp[i][3]=dp[i-1][2]
            dp[i][4]=dp[i-1][2]+dp[i-1][3]
            for j in range(5): dp[i][j]%=mod
        return sum(dp[n])%mod
    
    
s=Solution()
#print(s.countVowelPermutation(1))
#print(s.countVowelPermutation(2))
print(s.countVowelPermutation(5))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值