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

news/2024/7/20 19:31:12 标签: 华为od, 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),查看当前专栏更新的所有题目。


http://www.niftyadmin.cn/n/5246952.html

相关文章

【React】路由的基础使用

react-router-dom6的基础使用 1、安装依赖 npm i react-router-dom默认安装最新版本的 2、在src/router/index.js import { createBrowserRouter } from "react-router-dom"/* createBrowserRouter&#xff1a;[/home]--h5路由createHashRouter&#xff1a;[/#/ho…

[⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记

前言 DPD 数字预失真技术&#xff0c;是一种用于抑制功率放大器非线性失真的方法。 它通过在信号输入功率放大器&#xff08;PA&#xff09;之前插入一个预失真模块&#xff0c;对输入信号进行适当的调制&#xff0c;以抵消功率放大器引起的非线性失真&#xff0c;使功率放大器…

window环境下使用nginx部署多个项目(详细)

在官网下载相应版本的nginx安装包&#xff0c;链接如下&#xff1a;nginx: download 下载压缩包之后找一个目录解压就行了&#xff0c;我这里放在 D:\Program Files (x86) 目录下。 可以直接双击nginx.exe 本地启动nginx服务器。但是更推荐使用命令行&#xff1a;在这个目录下c…

基于SpringBoot的学生管理系统

基于SpringBoot的学生管理系统 文章目录 基于SpringBoot的学生管理系统 一.引言二.系统设计三.技术架构四.功能实现五.界面展示六.源码获取 一.引言 学生管理系统是一种用于管理学生信息、课程安排、成绩记录等学生相关数据的软件系统。它通过集中管理学生信息&#xff0c;提供…

基于ssm的新能源汽车在线租赁管理系统论文

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;新能源汽车在线租赁当然也不能排除在外。新能源汽车在线租赁是以实际运用为开发背景&#xff0c;运用软件工程开发方法&…

3.pytorch加载数据

1. Dataset 所谓Dataset&#xff0c;其实就是一个负责处理索引(index)到样本(sample)映射的一个类(class)。 torch.utils.data.Dataset 是一个表示数据集的抽象类。任何自定义的数据集都需要继承这个类并覆写相关方法。 Map式数据集 一个Map式的数据集必须要重写getitem(self…

干货!MES系统选型必须要考虑的9点要素!

你所在的企业是否为这些问题困扰&#xff1f; 纸质化管理混乱物料供应不及时设备数据难采集生产进度难透明 如果是的话&#xff0c;你的企业需要MES系统的帮助&#xff01; MES是制造执行系统&#xff08;Manufacturing Execution System&#xff09;的缩写。它是一种信息系…

融资“续命”后,小马智行、KargoBot急需学会“让钱生钱”

2023年&#xff0c;自动驾驶领域的关键词还是&#xff1a;商业化落地。 这一年&#xff0c;无人出租车、无人配送车、无人环卫车、无人卡车等概念依旧很火&#xff0c;特别是无人卡车&#xff08;自动驾驶卡车&#xff09;&#xff0c;由于场景相对封闭简单&#xff0c;被资本当…