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

​力扣解法汇总1641. 统计字典序元音字符串的数目

 目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

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

字符串 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' 靠后

示例 3:

输入:n = 33
输出:66045

提示:

  • 1 <= n <= 50 

解题思路:

* 解题思路:
* 这题其实就是一个动态规划的题目。
* 我们用一个二位数组ints来存放长度为i时分别只允许放入 (a, e, i, o, u)情况下的可能性(按字典序排列)。
* 长度为1时,自然5个元音的可能性都为1。
* 长度为2时,先放入u,则最后一位只能时u。所以长度为2并且第一位为u的可能性为1;也就是ints[i][0]=ints[i-1][0]
* 同理,所以长度为2并且第一位为o的可能性为2;也就是ints[i][1]=ints[i-1][1]+ints[i-1][0]
* 同理,所以长度为2并且第一位为i的可能性为3;也就是ints[i][2]=ints[i-1][2]+...;
* 同理,所以长度为2并且第一位为e的可能性为4;也就是ints[i][3]=ints[i-1][3]+...;
* 同理,所以长度为2并且第一位为a的可能性为5;也就是ints[i][4]=ints[i-1][4]+...;
* 如果长度为3时,也可以按照上面的理论继续,因为如果第一位为u那么后面只能选择第二位也为u的可能性。
* ints[3][0]=ints[2][0]
* ints[3][1]=ints[2][1]++ints[2][0];
* 最后,我们统计数组ints[n-1]的sum即可。
 

代码:

public class Solution1641 {

    public int countVowelStrings(int n) {
        int[][] ints = new int[n][5];
        Arrays.fill(ints[0], 1);
        for (int i = 1; i < n; i++) {
            int sum = 0;
            for (int j = 0; j < 5; j++) {
                sum += ints[i - 1][j];
                ints[i][j] = sum;
            }
        }
        return Arrays.stream(ints[n - 1]).sum();
    }
}


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

相关文章:

  • MySql根据经纬度查询距离
  • 在 Vue 3 集成 e签宝电子合同签署功能
  • SpringBoot3动态切换数据源
  • Flutter:封装一个自用的bottom_picker选择器
  • 深入学习RabbitMQ的Direct Exchange(直连交换机)
  • 【权限管理】Apache Shiro学习教程
  • MySQL OCP888题解071-干净关闭MySQL服务器
  • Matlab实现PCA算法(附上完整仿真源码)
  • AD360自助式密码管理
  • ActiViz.NET 9.2.2023 Crack
  • ToBeWritten之物联网通信接口调试
  • react常用语法
  • 2023年 合肥市庐阳区信息学竞赛区赛 小学组
  • shiro知识点梳理
  • Python 自动化指南(繁琐工作自动化)第二版:七、使用正则表达式的模式匹配
  • ES、MongoDB、HBase的区别和使用场景
  • 一起Talk Android吧(第五百三十六回:RxJava中的事件转换)
  • 浅谈常量字符串
  • java基础:java泛型相关内容
  • 代码管理平台Codeup测评
  • 蓝桥杯第15天(Python版)(数论)
  • 【Ruby学习笔记】1.Ruby的简介、环境、Linux安装及Windows安装
  • 高级Java工程师面试题经典面试题1220道(附答案)
  • Python 自建项目上传到 PyPI 之后通过 pip 可安装
  • 自己动手写CPU——第一篇
  • ChatGPT AI国内免魔法使用