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

news2024/9/17 7:24:21

题 目描述

开头和结尾都是元音字母(aeiouAEIOU)的字符串为元音字符串,其中混杂的非元音字母数量为其瑕疵度。比如.

  • 1.“a”、“aa"是元音字符串,其瑕疵度都为0
  • 2.“aiur"不是元音字符串(结尾不是元音字符)
  • 3.“abira”是元音字符串,其瑕疵度为2

给定一个字符串,请找出指定瑕疵度的最长元音字符子串,并输出其长度,如果找不到满足条件的元音字符子串,输出0。

  • 子串:字符串中任意个连续的字符组成的子序列称为该字符串的子串。

输入描述

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

输出描述

输出为一个整数,代表满足条件的元音字符子串的长度。

示例1
输入:
0
asdbuiodevauufgh
输出:

3
说明:
满足条件的最长元音字符子串有两个,分别为uio和auu,长度为3.

示例2
输入:
2
aeueo
输出:

0
说明:
没有满足条件的元音字符子串,输出0

示例3
输入:

1
aabeebuu
输出:

5
说明:
满足条件的最长元音字符子串有两个,分别为aabee和eebuu,长度为5

public class 最长的指定瑕疵度的元音子串Main {
    public static void main(String[] args) {
        // 定义一个HashSet存储元音字符,用于快速查找
        char[] chars = "aeiouAEIOU".toCharArray();
        HashSet<Character> st = new HashSet<>();
        for (char c: chars){
            st.add(c);
        }
        // 使用Scanner来读取输入
        Scanner in = new Scanner(System.in); 
        int cnt = in.nextInt(); // 读取预期的瑕疵度
        StringBuilder sb = new StringBuilder(in.next()); // 读取字符串
        int n = sb.length(); // 字符串长度
        sb.insert(0, ' '); // 前面插入空格,使索引从1开始
        sb.append(' '); // 后面插入空格,使索引到n结束
 
        // 创建一个列表存储所有非元音字符的位置
        List<Integer> v = new ArrayList<>();
        v.add(0); // 初始化,加入0作为首元素
        for (int i = 1; i <= n; i++) {
            // 如果当前字符不是元音,则记录其位置
            if (!st.contains(sb.charAt(i))) {
                v.add(i);
            }
        }
        v.add(n+1);

        int ans = 0; // 初始化答案为0
        // 遍历非元音字符的位置,找出最长的满足瑕疵度的元音子串
        for (int p = 1; p + cnt < v.size(); p++) {
            int pl = v.get(p-1)+1, pr = v.get(p+cnt)-1;
            if (st.contains(sb.charAt(pl)) && st.contains(sb.charAt(pr)))   // 保证两端是元音字符
                ans = Math.max(ans, pr - pl + 1);
        }
 
        // 输出结果
        System.out.println(ans);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2116372.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二叉树的相关选择题和基本方法(持续更新)

二叉树相关选择题和基本方法 选择题1选择题2选择题3选择题4选择题5选择题6选择题7选择题8选择题9选择题10选择题11选择题12选择题13选择题14选择题15选择题16选择题17选择题18选择题19选择题20选择题21选择题22实现二叉树的基本操作查询二叉树当中节点的个数遍历思想子问题思想…

[数据集][图像分类]熊分类数据集309张5类别黑熊泰迪北极熊等

数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;309 分类类别数&#xff1a;5 类别名称:["black","grizzly","panda","polar","teddy"] 每个类别图…

大数据之Flink(五)

15、Flink SQL 15.1、sql-client准备 启用Hadoop集群(在Hadoop100上) start-all.sh启用yarn-session模式 /export/soft/flink-1.13.0/bin/yarn-session.sh -d启动sql-client bin/sql-client.sh embedded -s yarn-sessionsql文件初始化 可以初始化模式、环境&#xff08;流/批…

BUUCTF(34)特殊的 BASE64

使用pycharm时&#xff0c;如果想把代码撤销到之前的状态可以用 Ctrlz 如果不小心撤销多了&#xff0c;可以用 CtrlShiftZ 还原&#xff0c; 别傻傻的重新敲了 BUUCTF在线评测 (buuoj.cn) 查看字符串&#xff0c;想到base64的变表 这里用的c的标准程序库中的string&#xff0…

JS_循环结构

目录标题 while结构for循环foreach循环 while结构 几乎和JAVA一致 代码 <script> /* 打印99 乘法表 */ var i 1; while(i < 9){ var j 1; while(j < i){ document.write(j"*"i""i*j" "); j; } document.write("<hr/…

《机器学习》数据预处理 删除、替换、填充 案例解析及实现

目录 一、了解数据清洗 1、什么是数据清洗 2、数据清洗步骤 1&#xff09;缺失值处理 2&#xff09;异常值处理 3&#xff09;重复值处理 4&#xff09;格式修正 5&#xff09;数据一致性检查 6&#xff09;数据类型转换 二、数据清洗用法 1、有如下文件内容 2、完…

前向渲染路径

1、前向渲染路径处理光照的方式 前向渲染路径中会将光源分为以下3种处理方式&#xff1a; 逐像素处理&#xff08;需要高等质量处理的光&#xff09;逐顶点处理&#xff08;需要中等质量处理的光&#xff09;球谐函数&#xff08;SH&#xff09;处理&#xff08;需要低等质量…

线程的四种操作

所属专栏&#xff1a;Java学习 1. 线程的开启 start和run的区别&#xff1a; run&#xff1a;描述了线程要执行的任务&#xff0c;也可以称为线程的入口 start&#xff1a;调用系统函数&#xff0c;真正的在系统内核中创建线程&#xff08;创建PCB&#xff0c;加入到链…

C++17: 用折叠表达式实现一个IsAllTrue函数

前言 让我们实现一个 IsAllTrue 函数&#xff0c;支持变长参数&#xff0c;可传入多个表达式&#xff0c;必须全部计算为true&#xff0c;该函数才返回true。 本文记录了逐步实现与优化该函数的思维链&#xff0c;用到了以下现代C新特性知识&#xff0c;适合对C进阶知识有一定…

2025最新:如何打造公司财务管理系统?Java SpringBoot实现,一步到位管理企业财务!

✍✍计算机毕业编程指导师** ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java…

STM32F407VET6开发板RT-Thread的移植适配

前言 最近购买了一块 STM32F407VET6开发板【魔女】&#xff0c;http://www.stm32er.com/ 通过原理图了解到&#xff0c;开发板板载 CMSIS-DAP 调试下载口&#xff0c;例程部分大部分以裸机程序为主 目标&#xff1a;打算移植适配到 RT-Thread 适配 RT-Thread RT-Thread 支持…

基于准静态自适应环型缓存器(QSARC)的taskBus万兆吞吐实现

文章目录 概要整体架构流程技术名词解释技术细节1. 数据结构2. 自适应计算队列大小3. 生产者拼接缓存4. 高效地通知消费者 小结1. 性能表现情况2. 主要改进3. 源码和发行版 概要 准静态自适应环形缓存器&#xff08;Quasi-Static Adaptive Ring Cache&#xff09;是taskBus用于…

【Python报错已解决】 No Python at ‘C:\Users...\Python Python39\python.exe’

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一&#xff1a;检查Python安装路径2.2 …

苍穹外卖随记(一)

黑马苍穹外卖逻辑和细节的问题和解决 1.后端查询到员工的日期信息&#xff0c;将信息进行json化传给前端时发生&#xff1a;前端收到的是不标准的日期json串。 解决&#xff1a;1.注解进行json格式化&#xff08;JsonFormat&#xff09;2. 在spring MVC中&#xff0c;通过消息…

如何验证VMWare WorkStation的安装?

如何验证VMWare WorkStation的安装&#xff1f; 右击"网络"&#xff0c;点击 打开"网络和Internet设置"&#xff0c;点击更改适配器选项&#xff0c;如果出现VMNet1和VMNet8&#xff0c;则说明安装成功。

内网穿透(cpolar实现)

目录 一、介绍 二、内网穿透工具cpolar实现 1.下载与安装 2.cpolar指定authtoken 3.获取临时域名 4.验证临时域名有效性 一、介绍 内网穿透&#xff0c;即 NAT 穿透&#xff08;Network Address Translation Traversal&#xff09;&#xff0c;是一种网络技术&#xff0…

Python爬虫使用实例-wallpaper

1/ 排雷避坑 &#x1f95d; 中文乱码问题 print(requests.get(urlurl,headersheaders).text)出现中文乱码 原因分析&#xff1a; <meta charset"gbk" />解决方法&#xff1a; 法一&#xff1a; response requests.get(urlurl,headersheaders) response.en…

java基础-IO(4)管道流 PipedOutputStream、PipedInputStream、PipedReader、PipedWriter

管道 提到管道&#xff0c;第一印象就是水管或者地下管道&#xff0c;一节接着一节&#xff0c;形如下图。 管道流 "流"从上一个管道 ——-> 下一个管道。又细分为字节流和字符流。 字节流&#xff08;PipedOutputStream、PipedInputStream&#xff09; 如果…

SSM框架介绍

SSM通常指的是三个开源框架的组合&#xff0c;即Spring、SpringMVC&#xff08;Spring Web MVC&#xff09;和MyBatis&#xff0c;这三个框架经常一起使用来开发Java企业级应用&#xff0c;特别是在Web应用开发中非常流行。 SSM框架介绍 Spring 简介&#xff1a;Spring是一个…

谷粒商城のNginx

文章目录 前言一、Nginx1、安装Nginx2、相关配置2.1、配置host2.2、配置Nginx2.3、配置网关 前言 本篇重点介绍项目中的Nginx配置。 一、Nginx 1、安装Nginx 首先需要在本地虚拟机执行&#xff1a; mkdir -p /mydata/nginx/html /mydata/nginx/logs /mydata/nginx/conf在项目…