【华为OD题库-081】最长的元音子串长度-Java

news/2024/11/14 20:16:26/

题目

题目描述:
定义当一个字符串只有元音字母一(a,e,i,o,u,A,E,l,O,U)组成,
称为元音字符串,现给定一个字符串,请找出其中最长的元音字符串,并返回其长度,如果找不到请返回0,
字符串中任意一个连续字符组成的子序列称为该字符串的子串
输入描述:
一个字符串其长度0<length ,字符串仅由字符a-z或A-Z组成
输出描述:
一个整数,表示最长的元音字符子串的长度
示例1:
输入
asdbuiodevauufgh
输出
3
说明:
最长的元音字符子串为uio和auu长度都为3,因此输出3

思路

正则表达式

利用正则表达式,找到所有匹配的子串,利用matcher.end-matcher.start可以计算当前匹配的长度。最后统计最长长度即可

遍历统计

传统的遍历,找到第一个匹配的字符,然后计算当前有多少个连续匹配的字符,最后得到最大长度即可

题解

正则表达式

package hwod;import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class TheLongestVowelSubStr {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String s = sc.nextLine();System.out.println(theLongestVowelSubStr(s));}private static int theLongestVowelSubStr(String s) {int res = 0;Pattern p = Pattern.compile("[aeiouAEIOU]+");Matcher matcher = p.matcher(s);while (matcher.find()) {res = Math.max(res, matcher.end() - matcher.start());}return res;}
}

遍历统计

package hwod;import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class TheLongestVowelSubStr {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String s = sc.nextLine();System.out.println(theLongestVowelSubStr(s));}private static int theLongestVowelSubStr(String s) {s = s.toLowerCase();List<Character> list = Arrays.asList('a', 'e', 'i', 'o', 'u');int res = 0;for (int i = 0; i < s.length(); i++) {if (list.contains(s.charAt(i))) {int j = i + 1;while (j < s.length() && list.contains(s.charAt(j))) {j++;}res = Math.max(res, j - i);i = j - 1;}}return res;}
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。


http://www.ppmy.cn/news/1262432.html

相关文章

Linux安全学习路标

1. 操作系统基础知识 首先&#xff0c;你需要建立坚实的操作系统基础知识&#xff0c;包括Linux文件系统和目录结构、Linux进程管理、权限管理等基本概念。 2. 网络和通信安全 学习关于网络和通信安全的基础知识&#xff0c;包括TCP/IP协议栈、网络攻击类型、防火墙配置、网…

Mysql日志binlog、redolog、undolog

Mysql有多种日志&#xff0c;承担着不同的功能。 BinLog高可用的基石 Binlog是Mysql的server层记录的日志&#xff0c;包含表结构和数据的变更。Binlog有两个常用的作用&#xff0c;一个是用作数据库恢复&#xff0c;通过数据库快照和binlog&#xff0c;我们可以把数据库恢复…

React中使用TypeScript代替prop-types

原文链接 公众号-React中使用TypeScript代替prop-types 个人公众号&#xff0c;呜呜呜&#xff0c;求各位大佬们关注下&#xff0c;本人的公众号主要写React 跟NodeJs的 ​关于prop-types 对于部分的同学&#xff0c;不大了解为什么我们的代码里面要用到prop-types这个库&a…

UE5 - 把ArchvizExplorer项目改造成自己的数字孪生项目 - 开发记要

参考&#xff1a; https://blog.csdn.net/qq_17523181/article/details/133853099 https://blog.csdn.net/qq_17523181/article/details/134455597 1. 安装项目 https://www.unrealengine.com/marketplace/zh-CN/product/archviz-explorer https://karldetroit.com/archviz-exp…

Go语言初始化数组的六种方式

介绍 在Go语言中&#xff0c;有多种方式可以初始化数组&#xff0c;本文将介绍初始化数组的六种方法。 方式1&#xff1a;指定数组大小并初始化 var array [3]int [3]int{1, 2, 3}指定数组的大小为3&#xff0c;并初始化为指定的值1, 2, 3。 方式2&#xff1a;根据初始化值…

使用 nnUNetv2 的一些踩坑记录(或许还会有继续更新

nnUNet 依然是最鲁棒的分割网络。今年初原作者更新了 nnUNet 的第二版即 nnUNetv2&#xff0c;题主近期试用的时候有一些踩坑的地方进行记录。 没有官方提供的预训练权重 官方文档在一个非常不起眼的角落提及了&#xff0c;v2版本尚无预训练权重可直接使用&#xff0c;有相关…

Golang使用Swagger文档教程

Golang开发效率是杠杠滴&#xff0c;简单几行代码就可完成一个可用的服务&#xff0c;如下代码&#xff1a; 采用Gin作为web framework采用Gorm作为持久化ORM采用Swagger作为OpenAPI文档管理工具 package mainimport ("encoding/csv""fmt""os"…

波奇学C++:function包装器和智能指针(一)

function包装器 相当于适配器&#xff0c;用于对可调用对象&#xff08;函数指针&#xff0c;仿函数&#xff0c;lambda&#xff09;进行封装&#xff0c;使得他们的类型统一。 double func(double d) {return d / 4; } struct func1 {double operator()(double d){return d …