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

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

题目

题目描述:
定义当一个字符串只有元音字母一(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),查看当前专栏更新的所有题目。

相关文章:

  • Jenkins:持续集成与持续交付的自动化利器
  • [Verilog]用Verilog实现串并转换/并串装换
  • c语言插入排序及希尔排序详解
  • Spring Boot 常用注解分类
  • 开源框架Apache NiFi调研
  • NSSCTF Crypto靶场练习,21-30wp
  • Springboot入门篇
  • 自动数据增广论文笔记 | AutoAugment: Learning Augmentation Strategies from Data
  • Lua字符串(包含任意字符,如中文)任意位置截取
  • 新增模板中心和系统设置模块,支持飞书平台对接,DataEase开源数据可视化分析平台v2.1.0发布
  • Flink SQL: 高效解析 Kafka 数据并存储为 Parquet 至 HDFS
  • uni-app 微信小程序之好看的ui登录页面(四)
  • Kafka使用总结
  • 一、微前端目标、前端架构的前生今世、微前端架构优势和劣势、软件设计原则与分层
  • python socket编程9 - PyQt6界面实现UDP server/client 多客户端通讯的例子
  • Android开源项目规范总结
  • Bytom交易说明(账户管理模式)
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • CODING 缺陷管理功能正式开始公测
  • dva中组件的懒加载
  • golang 发送GET和POST示例
  • Javascripit类型转换比较那点事儿,双等号(==)
  • MySQL-事务管理(基础)
  • Protobuf3语言指南
  • Python中eval与exec的使用及区别
  • React-生命周期杂记
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Webpack 4x 之路 ( 四 )
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 基于组件的设计工作流与界面抽象
  • 每天一个设计模式之命令模式
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 实现简单的正则表达式引擎
  • 使用 5W1H 写出高可读的 Git Commit Message
  • #Lua:Lua调用C++生成的DLL库
  • (145)光线追踪距离场柔和阴影
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (Oracle)SQL优化技巧(一):分页查询
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • .NET BackgroundWorker
  • .NET Core WebAPI中封装Swagger配置
  • .NET Core 中插件式开发实现
  • .net 调用php,php 调用.net com组件 --
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .Net下的签名与混淆
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)
  • [C++]命名空间等——喵喵要吃C嘎嘎
  • [C++随笔录] 红黑树
  • [CTF]2022美团CTF WEB WP
  • [HNOI2015]实验比较
  • [IE9] IE9 beta版下载链接
  • [leetcode]Clone Graph