| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 糖逗 于 2020-12-7 21:31 编辑  
 
题目描述: 
- 给你一个整数 n,请返回长度为 n 、仅由元音 (a, e, i, o, u) 组成且按 字典序排列 的字符串数量。
 
  
- 字符串 s 按 字典序排列 需要满足:对于所有有效的 i,s[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' 靠后
 
 - 示例 3:
 
  
- 输入:n = 33
 
 - 输出:66045
 
 -  
 
  
- 提示:
 
  
- 1 <= n <= 50 
 
  复制代码 
 
 
- class Solution {
 
 - public:
 
 -     int countVowelStrings(int n) {
 
 -         //动态规划
 
 -         if(n == 1) return 5;
 
 -         //定义dp【i】【j】是以前i个(从0开始)为结尾的,且长度为j的字符串的个数
 
 -         int dp[5][n + 1];
 
 -         dp[0][1] = 1, dp[1][1] = 2, dp[2][1] = 3, dp[3][1] = 4, dp[4][1] = 5;
 
 -         for(int i = 0; i < 5; i++){
 
 -             for(int j = 2; j <= n; j++){
 
 -                 if(i == 0)dp[i][j] = dp[i][j-1];
 
 -                 else{
 
 -                     dp[i][j] = dp[i-1][j] + dp[i][j-1];//最后两个字符相同和不同两种情况
 
 -                 }
 
 -             }
 
 -         }
 
 -         return dp[4][n];
 
 -     }
 
 - };
 
  复制代码 
 
 
参考链接:https://leetcode-cn.com/problems ... n-mou-xian-de-me-w/ |   
 
 
 
 |