【华为OD题库-081】最长的元音子串长度-Java
2023-12-14 08:10:44
题目
题目描述:
定义当一个字符串只有元音字母一(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),查看当前专栏更新的所有题目。
文章来源:https://blog.csdn.net/qq_31076523/article/details/134847388
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!