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;
    }
};
复制代码
posted @   HM-7  阅读(23)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示