【华为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可以计算当前匹配的长度。最后统计最长长度即可

遍历统计

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

题解

正则表达式

java 复制代码
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;
    }
}

遍历统计

java 复制代码
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),查看当前专栏更新的所有题目。

相关推荐
java_heartLake2 分钟前
设计模式之建造者模式
java·设计模式·建造者模式
G皮T2 分钟前
【设计模式】创建型模式(四):建造者模式
java·设计模式·编程·建造者模式·builder·建造者
niceffking6 分钟前
JVM HotSpot 虚拟机: 对象的创建, 内存布局和访问定位
java·jvm
菜鸟求带飞_9 分钟前
算法打卡:第十一章 图论part01
java·数据结构·算法
骆晨学长26 分钟前
基于springboot的智慧社区微信小程序
java·数据库·spring boot·后端·微信小程序·小程序
AskHarries31 分钟前
利用反射实现动态代理
java·后端·reflect
@月落32 分钟前
alibaba获得店铺的所有商品 API接口
java·大数据·数据库·人工智能·学习
liuyang-neu37 分钟前
力扣 42.接雨水
java·算法·leetcode
z千鑫41 分钟前
【人工智能】如何利用AI轻松将java,c++等代码转换为Python语言?程序员必读
java·c++·人工智能·gpt·agent·ai编程·ai工具
Flying_Fish_roe1 小时前
Spring Boot-Session管理问题
java·spring boot·后端