解题思路:
一道非常简单的动态规划题目,因为需要考虑的情况都是常数级别,所以只需要定义5个变量存储到第k个位置时,以任意变量代表的原因形成的字符串个数,注意每次更新要取模,最后返回所有元音数量的和,代码如下:
class Solution {
public:
int countVowelPermutation(int n) {
long long a = 1, e = 1, i = 1, o = 1, u = 1;
const int MOD = 1e9 + 7;
for(int k = 1; k < n; k ++) {
long long aa = (e + i + u) % MOD;
long long ee = (a + i) % MOD;
long long ii = (e + o) % MOD;
long long oo = i;
long long uu = (i + o) % MOD;
a = aa;
e = ee;
i = ii;
o = oo;
u = uu;
}
return (a + e + i + o + u) % MOD;
}
};