题目链接

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(i−1,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(i−1,2)+f(i−1,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(i−1,3)+f(i−1,2)+f(i−1,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;}
};

Leetcode.1641 统计字典序元音字符串的数目相关推荐

  1. LeetCode 1641. 统计字典序元音字符串的数目(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n,请返回长度为 n .仅由元音 (a, e, i, o, u) 组成且按 字典序排列 的字符串数量. 字符串 s 按 字典序排列 需要满足 ...

  2. 统计字典序元音字符串的数目(一题三解)

    文章目录 前言 题目描述 回溯算法 动态规划 数学(盒子放球模型) 结语 前言 突然间发现自己好久没写有关算法题的博客了,今儿来一道很有意思的算法题,它可以使用三种完全不同的思路来处理,话不多说,直接 ...

  3. C++描述 LeetCode 5677. 统计同构子字符串的数目

    C++描述 LeetCode 5677. 统计同构子字符串的数目   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写 ...

  4. LeetCode 1759. 统计同构子字符串的数目

    文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串 s ,返回 s 中 同构子字符串 的数目. 由于答案可能很大,只需返回对 10^9 + 7 取余 后的结果. 同构字符串 的定义为:如果一 ...

  5. [M数学] lc1759. 统计同构子字符串的数目(数学+等差求和)

    文章目录 1. 题目来源 2. 题目解析 1. 题目来源 链接:1759. 统计同构子字符串的数目 2. 题目解析 分析题目,连续字符串对答案的贡献实际上是 等差数列求和 即可,采用双指针求出连续字符 ...

  6. LeetCode 2062. 统计字符串中的元音子字符串

    文章目录 1. 题目 2. 解题 1. 题目 子字符串 是字符串中的一个连续(非空)的字符序列. 元音子字符串 是 仅 由元音('a'.'e'.'i'.'o' 和 'u')组成的一个子字符串,且必须包 ...

  7. python字典统计排序 统计各省份大学数量_1641统计字典排序元音字符串的数量(递归,递归),数目,递推...

    1. 问题描述: 给你一个整数 n,请返回长度为 n .仅由元音 (a, e, i, o, u) 组成且按 字典序排列的字符串数量.字符串 s 按字典序排列需要满足:对于所有有效的 i,s[i] 在字 ...

  8. LeetCode每日一题——1684. 统计一致字符串的数目

    LeetCode每日一题系列 题目:1684. 统计一致字符串的数目 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个由不同字符组成的字符串 allowed ...

  9. LeetCode 每日一题——1684. 统计一致字符串的数目

    1.题目描述 1684. 统计一致字符串的数目 给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words .如果一个字符串的每一个字符都在 allowed 中,就称这个字符串是 一 ...

最新文章

  1. grpc使用记录(一) gRPC编译(mscv/gcc)
  2. 什么场景要用@bean_终于明白为什么要加 final 关键字了!
  3. Javascript获取url参数值
  4. Python的类Class中__init__函数和self
  5. Sql Server事务日志
  6. PPIO创始人王闻宇:从PPTV到PPIO,创业路上的挑战与思考
  7. React Native开发指南-在原生和React Native间通信
  8. 关于将表单上传到服务器
  9. java 药品管理系统_基于Java web的医药药品管理系统
  10. iphone转android教程,王者荣耀ios转安卓教程攻略
  11. alpha对冲(股票+期货)
  12. 网络基础--TCP/IP网络基础
  13. 红亚太学链微信公众号正式发布
  14. element table 左对齐
  15. 基于 python 和 UDP 协议实现简易聊天室(多人群聊)----详细解析带字幕
  16. 删除oracle所有表外键,Oracle中查询、禁用、起用、删除表外键
  17. 2022湖南株洲服饰产业数智互联网峰会暨湖南服饰产业互联网高峰论坛成功举办
  18. yarn的组成部分_Yarn 的组成及其工作流程
  19. c语言记录键盘敲击次数,【转】你知道一天敲键盘的敲击次数能达到多少么
  20. 生成.sens格式数据集用于BundleFusion重建

热门文章

  1. 求解圆周率PI的近似值
  2. 批量导出创建索引的脚本
  3. 【云速建站】多语言站点集合
  4. layui使按钮居中_button按钮居中的方法
  5. linux bower 安装目录,npm bower安装和使用
  6. 《林海雪原》中的黑话暗号
  7. 网络安全与网站安全及计算机安全:Kali Linux网络安全与主机扫描背后的“秘密”
  8. 报错incorrect username or password ( access token )
  9. liugroup服务器说明
  10. SQL sever创建数据库数据表