当前位置: 首页 > article >正文

Leetcode.1641 统计字典序元音字符串的数目

题目链接

Leetcode.1641 统计字典序元音字符串的数目 Rating : 1519

题目描述

给你一个整数 n,请返回长度为 n、仅由元音 (a, e, i, o, u)组成且按 字典序排列 的字符串数量。

字符串 s字典序排列 需要满足:对于所有有效的 is[i]在字母表中的位置总是与 s[i+1]相同或在 s[i+1]之前。

示例 1:

输入:n = 1
输出:5
解释:仅由元音组成的 5 个字典序字符串为 [“a”,“e”,“i”,“o”,“u”]

示例 2:

输入:n = 2
输出:15
解释:仅由元音组成的 15 个字典序字符串为
[“aa”,“ae”,“ai”,“ao”,“au”,“ee”,“ei”,“eo”,“eu”,“ii”,“io”,“iu”,“oo”,“ou”,“uu”]
注意,“ea” 不是符合题意的字符串,因为 ‘e’ 在字母表中的位置比 ‘a’ 靠后

提示:

  • 1 < = n < = 50 1 <= n <= 50 1<=n<=50

解法:线性dp

我们定义 f ( i , j ) f(i,j) f(i,j) 为一共 i个字符,以字符 j1 -> a , 2 -> e , 3 -> i , 4 -> o , 5 -> u)结尾的方案数。

按照定义,最终的答案就为 f ( n , 1 ) + f ( n , 2 ) + f ( n , 3 ) + f ( n , 4 ) + f ( n , 5 ) f(n,1) + f(n,2) + f(n,3) + f(n,4) + f(n,5) f(n,1)+f(n,2)+f(n,3)+f(n,4)+f(n,5)

因为必须按字典序排序:

  • a只能接在 a后面,即 f ( i , 1 ) = f ( i − 1 , 1 ) f(i,1) = f(i-1,1) f(i,1)=f(i1,1)
  • e只能接在 ae后面,即 f ( i , 2 ) = f ( i − 1 , 2 ) + f ( i − 1 , 1 ) f(i,2) = f(i-1,2) + f(i-1,1) f(i,2)=f(i1,2)+f(i1,1)
  • i只能接在 a , e , i后面,即 f ( i , 3 ) = f ( i − 1 , 3 ) + f ( i − 1 , 2 ) + f ( i − 1 , 1 ) f(i,3) = f(i-1,3) + f(i-1,2) + f(i-1,1) f(i,3)=f(i1,3)+f(i1,2)+f(i1,1)
  • 剩下的两个同理。。。

时间复杂度: O ( 5 ! ∗ n ) O(5! * n) O(5!n)

C++代码:

class Solution {
public:
    int countVowelStrings(int n) {
        int f[n + 1][6];

        memset(f,0,sizeof f);

        f[0][0] = 1;

        for(int i = 1;i <= n;i++){
            for(int j = 1;j <= 5;j++){
                for(int k = 0;k <= j;k++) f[i][j] += f[i-1][k];
            }
        }

        int ans = 0;
        for(int i = 1;i <= 5;i++) ans += f[n][i];

        return ans;
    }
};



http://www.kler.cn/a/5591.html

相关文章:

  • 人工智能ACA(七)——计算机视觉基础
  • 关于Edge浏览器的设置
  • ReactPress 1.6.0:重塑博客体验,引领内容创新
  • 计算机毕业设计Python+Spark知识图谱酒店推荐系统 酒店价格预测系统 酒店可视化 酒店爬虫 酒店大数据 neo4j知识图谱 深度学习 机器学习
  • 绩效考核试题
  • 移动端网页兼容适配方案小结
  • 《雪国》像憧憬未曾见过的爱恋,美则美矣
  • TCP和UDP网络编程
  • 接收机中的非线性因素来源与模型
  • fastp软件介绍
  • ChatGPT自我分析
  • 【论文写作】如何表示比较关系, compare to OR compare with?
  • 自定义注解:让代码更加简洁优雅
  • 【SpringSecurity】认证授权框架——SpringSecurity使用方法
  • JavaWeb——过滤器Filter和拦截器Interceptor
  • 谷粒商城笔记+踩坑(18)——购物车
  • 2023年南京晓庄学院五年一贯制专转本软件工程专业考试大纲
  • 一文读懂 mysql 为什么要两阶段提交以及两阶段提交原理
  • 面试官灵魂拷问[二]:SQL 语句中 where 条件后写上 1=1 是什么意思?
  • 02_Python 学习基础
  • 【算法】Raft算法详解
  • C++ 20 list容器
  • SpringBoot+vue的图书管理系统
  • Java中字节流的相关内容
  • markdown
  • 【linux】基于阻塞队列的生产者消费者模型(条件变量)