LeetCode Daily 13
2022-1-17 T1220.统计元音字母序列的数目
题目描述:
给你一个整数 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"。
思路:
计算每次以该字母结尾的情况数记录,每次取余更新情况数,最后结果为五字母的情况总和。
每次取余比最后取余时间快。
代码:
class Solution { public: int countVowelPermutation(int n) { const int maxValue = 1e9 + 7; long a = 1, e = 1, i = 1, o = 1, u = 1, sumA, sumE, sumI, sumO, sumU; for(int m = 2; m <= n; m++){ sumA = (e + u + i) % maxValue; sumE = (a + i) % maxValue; sumI = (e + o) % maxValue; sumO = i; sumU = (i + o) % maxValue; a = sumA; e = sumE; i = sumI; o = sumO; u =sumU; } return (a + e + i + o + u) % maxValue; } };

浙公网安备 33010602011771号