华为OD机试之最长的指定瑕疵度的元音子串(Java源码)

news/2024/7/20 19:07:29 标签: java, 开发语言, 华为OD

最长的指定瑕疵度的元音子串

输入描述

开头和结尾都是元音字母(aeiouAEIOU)的字符串为元音字符串,其中混杂的非元音字母数量为其瑕疵度。比如:
“a” 、 “aa”是元音字符串,其瑕疵度都为0
“aiur”不是元音字符串(结尾不是元音字符)
“abira”是元音字符串,其瑕疵度为2
给定一个字符串,请找出指定瑕疵度的最长元音字符子串,并输出其长度,如果找不到满足条件的元音字符子串,输出0。
子串:字符串中任意个连续的字符组成的子序列称为该字符串的子串。

输出描述

首行输入是一个整数,表示预期的瑕疵度flaw,取值范围[0, 65535]。
接下来一行是一个仅由字符a-z和A-Z组成的字符串,字符串长度(0, 65535]。

输入输出说明
0
asdbuiodevauufgh
3uio为瑕疵度为0的最长子串,故长度为3 当然auu也是
2
aeueo
30

解析

该题考查正则表达式的使用。 其中一个隐含的点就是正则匹配时不能找出所有满足的子串。因此可以匹配到一个就把开始字符替换掉。这样能尽量多的找出满足条件的子串。

源码

java">import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class T22 {
	public static void main(String[] args) {
		int flaw =1; // 瑕疵度
		String inputStr = "asdabbuiooodevauufghu"; // 匹配字符
		//开头是元音 结尾是元音 中间出现的非元音字符是瑕疵度
		String regex="";
		if(flaw==0){
			regex="[aeiouAEIOU]{1,}";
		}else{
			regex="[aeiouAEIOU]{1}";
			for(int i=0;i<flaw;i++){
				regex+="[^aeiouAEIOU]{1}[aeiouAEIOU]*";
			}
			regex+="[aeiouAEIOU]{1}";
		}
		
		System.out.println(regex);
		System.out.println(inputStr.matches("[aeiou]{1}"));
//		while(inputStr.contains("[aeiou]{1}"))
		Pattern pattern=Pattern.compile(regex);
		Matcher matcher=pattern.matcher(inputStr);
		int max=0;
		while(matcher.find()){
			System.out.println(inputStr.substring(matcher.start(), matcher.end()));
			if(matcher.end()-matcher.start()>max){
				max=matcher.end()-matcher.start();
			}
			StringBuilder sb=new StringBuilder(inputStr);
			sb.setCharAt(matcher.start(), '_');//每次匹配到之后就把开始字符替换掉 可以一直往后匹配。
			inputStr=sb.toString();
			matcher=pattern.matcher(inputStr);
		}
		System.out.println("长度:"+max);
	}	
}


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

相关文章

Linux:web基础与HTTP协议

Linux&#xff1a;web基础与HTTP协议 一、域名概述1.1 域名的概念1.2 域名空间结构1.3 域名注册 二、网页的概念2.1 网页2.2 网站2.3 主页2.4 网页2 三、HTML概述3.1 HTML概述3.2 HTML文档结构3.3 HTML 基本标签 四、web概述4.1 web概述4.2 Web1.0 vs Web2.04.3 静态网页4.3.1 …

操作系统第三章——内存管理(中)

九月重楼二两&#xff0c;冬至蝉蜕一钱&#xff0c;煎入隔年雪煮沸&#xff0c;可治人间相思苦疾&#xff0c; 可是&#xff0c;重楼七叶一花&#xff0c;冬日何来蝉蜕&#xff0c;原是相思无解 殊不知 夏枯即为九叶重楼&#xff0c;掘地三尺寒蝉现&#xff0c;除夕子时雪&…

ES Elasticsearch 五 、文档入门****

目录 文档document介绍 手动生成id 自动生成id _source //定制查询字段 全量替换 put 强制创建-只创建不覆盖 增加/_create 延迟删除 该状态防止磁盘写入消耗 局部更新 脚本 并发问题 文档document介绍 默认字段&#xff1a;_index 索引 _type 类型 _id 可…

MySQL数据库从入门到精通学习第5天(创建数据表,查看,修改表结构,删除表)

创建数据表&#xff0c;查看&#xff0c;修改表结构 创建数据表查看表结构修改表结构删除表 创建数据表 在对MySQL数据表进行操作之前我们需要创建数据库&#xff0c;并使用USE语句选择数据库。 创建数据库使用CREATE TABLE语句&#xff1a; 语法&#xff1a;CREATE [TEMPOR…

如何利用Smartbi电子表格进行财务常用账簿数据的联动查询

财务&#xff0c;是几乎所有企事业单位内部的核心组织。单位今年耗费几何&#xff0c;企业去年赚多少钱&#xff0c;平均成本在什么水平&#xff0c;为国家创造多少税收等等&#xff0c;所有这些信息&#xff0c;最终都通过财务账表的方式来体现。可以说&#xff0c;大家工作辛…

Java基础面试题突击系列5

&#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 &#xff0c;关注我不迷路 ❤️《java面试核心知识》突击系列&#xff0c;持续更新… &#x1f490; 面试必知必会学习路线&#xff1a;Java技术栈面试系列SpringCloud项目实战学习路线 &#x1f4dd;再小的收获x365天…

链式二叉树OJ题思路分享

⏩博主CSDN主页:杭电码农-NEO⏩   ⏩专栏分类:刷题分享⏪   ⏩代码仓库:NEO的学习日记⏩   &#x1f339;关注我&#x1faf5;带你刷更多C语言和数据结构的题!   &#x1f51d;&#x1f51d; 链式二叉树OJ题分享 1. 前言&#x1f6a9;2. 单值二叉树&#x1f6a9;2.1 审题…

【Games101】-> 计算机图形学

[toc] 【Games101】-> 计算机图形学 &#xff01;&#xff01;&#xff01;为什么计算机图形学和计算机视觉不一样&#xff1f;有何区别&#xff1f;&#xff01;&#xff01;&#xff01; 模型(Model) -> 图像(Image): 计算机图形学(渲染 3D -> 2D) 图像(Image) -…