华为OD机试 - 最长元音子串的长度(Python/JS/C/C++ 2024 E卷 100分)

在这里插入图片描述

华为OD机试 2024E卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

开头和结尾都是元音字母(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

四、测试用例

1、输入

2
nezhastudyjavaveryhard

2、输出

5

3、说明

掌握核心编程思想,让你的编程不再烦恼。

开头是元音,结尾是元音,中间出现的非元音字符是瑕疵度。

符合要求的子串有:

  • ezha
  • astu
  • avave

最长的是avave,长度5。

五、解题思路

核心思想:

开头是元音,结尾是元音,中间出现的非元音字符是瑕疵度

这道题的关键是正则表达式的合理使用。

六、Python算法源码

import redef main():import sysimport sys# 读取标准输入的所有行input_lines = sys.stdin.read().splitlines()# 读取瑕疵度flawflaw = int(input_lines[0])# 读取仅由字符a-z和A-Z组成的字符串str_input = input_lines[1]# 定义元音字母集合,包括大小写vowels = "aeiouAEIOU"# 构建正则表达式if flaw == 0:# 当瑕疵度为0时,匹配连续的至少一个元音字母regex = f"[{vowels}]+"else:# 当瑕疵度大于0时,匹配以元音字母开头和结尾,中间最多有flaw个非元音字母regex = f"[{vowels}](?:[^${vowels}]{{0,{flaw}}}[{vowels}])+"# 编译正则表达式pattern = re.compile(regex)# 寻找所有符合要求的子串matches = pattern.finditer(str_input)# 存储符合要求的子串的最大长度max_length = 0# 遍历所有匹配for match in matches:# 获取符合要求的子串matched_substring = match.group()# 更新最大长度if len(matched_substring) > max_length:max_length = len(matched_substring)# 输出符合要求的子串的最大长度print(max_length)if __name__ == "__main__":main()

七、JavaScript算法源码

// 引入readline模块以读取输入
const readline = require('readline');// 创建接口以读取标准输入
const rl = readline.createInterface({input: process.stdin,output: process.stdout
});let inputLines = [];
let currentLine = 0;// 读取所有输入行
rl.on('line', (line) => {inputLines.push(line);
});// 输入结束后执行的函数
rl.on('close', () => {// 读取瑕疵度flawlet flaw = parseInt(inputLines[0]);// 读取仅由字符a-z和A-Z组成的字符串let str = inputLines[1];// 定义元音字母集合,包括大小写const vowels = "aeiouAEIOU";// 构建正则表达式let regex = "";if (flaw === 0) {// 当瑕疵度为0时,匹配连续的至少一个元音字母regex = `[${vowels}]+`;} else {// 当瑕疵度大于0时,匹配以元音字母开头和结尾,中间最多有flaw个非元音字母regex = `[${vowels}](?:[^${vowels}]{0,${flaw}}[${vowels}])+`;}// 编译正则表达式const pattern = new RegExp(regex);// 寻找所有符合要求的子串const matches = str.matchAll(pattern);// 存储符合要求的子串的最大长度let maxLength = 0;// 遍历所有匹配for (const match of matches) {// 获取符合要求的子串let matchedSubstring = match[0];// 更新最大长度if (matchedSubstring.length > maxLength) {maxLength = matchedSubstring.length;}}// 输出符合要求的子串的最大长度console.log(maxLength);
});

八、C算法源码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <regex.h>int main(){int flaw;char str[1001]; // 假设输入字符串长度不超过1000// 读取瑕疵度flawscanf("%d", &flaw);// 读取仅由字符a-z和A-Z组成的字符串scanf("%s", str);// 定义元音字母集合,包括大小写char vowels[] = "aeiouAEIOU";// 构建正则表达式char regex[2000] = ""; // 足够大的缓冲区if(flaw == 0){// 当瑕疵度为0时,匹配连续的至少一个元音字母sprintf(regex, "[%s]+", vowels);}else{// 当瑕疵度大于0时,匹配以元音字母开头和结尾,中间最多有flaw个非元音字母sprintf(regex, "[%s](?:[^%s]{0,%d}[%s])+", vowels, vowels, flaw, vowels);}// 编译正则表达式regex_t regex_compiled;int reti = regcomp(&regex_compiled, regex, REG_EXTENDED);if (reti) {fprintf(stderr, "Could not compile regex\n");exit(1);}// 寻找所有符合要求的子串regmatch_t pmatch[1];int max_length = 0;const char *p = str;int offset = 0;while(regexec(&regex_compiled, p, 1, pmatch, 0) == 0){// 计算匹配的起始和结束位置int start = pmatch[0].rm_so + offset;int end = pmatch[0].rm_eo + offset;// 计算匹配的子串长度int length = end - start;if(length > max_length){max_length = length;}// 移动指针,避免重复匹配p += pmatch[0].rm_eo;offset += pmatch[0].rm_eo;}// 输出符合要求的子串的最大长度printf("%d\n", max_length);// 释放正则表达式的内存regfree(&regex_compiled);return 0;
}

九、C++算法源码

#include <bits/stdc++.h>
#include <regex>
using namespace std;int main(){int flaw;string str;// 读取瑕疵度flawcin >> flaw;// 读取仅由字符a-z和A-Z组成的字符串cin >> str;// 定义元音字母集合,包括大小写string vowels = "aeiouAEIOU";// 构建正则表达式string regex_str;if(flaw == 0){// 当瑕疵度为0时,匹配连续的至少一个元音字母regex_str = "[" + vowels + "]+";}else{// 当瑕疵度大于0时,匹配以元音字母开头和结尾,中间最多有flaw个非元音字母regex_str = "[" + vowels + "](?:[^" + vowels + "]{0," + to_string(flaw) + "}[" + vowels + "])+";}// 编译正则表达式regex pattern(regex_str);// 寻找所有符合要求的子串smatch match;string::const_iterator searchStart(str.cbegin());// 存储符合要求的子串的最大长度int max_length = 0;while(regex_search(searchStart, str.cend(), match, pattern)){// 获取符合要求的子串string matched_substring = match[0];// 更新最大长度if(matched_substring.length() > max_length){max_length = matched_substring.length();}// 移动搜索起始位置searchStart = match[0].second;}// 输出符合要求的子串的最大长度cout << max_length << endl;return 0;
}

🏆下一篇:华为OD机试真题 - 简易内存池(Python/JS/C/C++ 2024 E卷 200分)

🏆本文收录于,华为OD机试真题(Python/JS/C/C++)

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis入门第三步:Redis事务处理

欢迎继续跟随《Redis新手指南&#xff1a;从入门到精通》专栏的步伐&#xff01;在本文中&#xff0c;我们将探讨Redis的事务处理机制。了解如何使用事务来保证一系列操作的原子性和一致性&#xff0c;这对于构建可靠的应用程序至关重要 1 什么是Redis事务&#x1f340; ​ R…

解锁数据宝藏:AI驱动搜索工具,让非结构化数据“说话

哈哈,说起这个 AI 搜索演示啊,那可真是个有意思的话题!非结构化数据,这家伙虽然难搞,但价值却是杠杠的。今天呢,咱就好好聊聊怎么借助 Fivetran 和 Milvus,快速搭建一个 AI 驱动的搜索工具,让企业能从那些乱七八糟的数据里淘到金子! 一、非结构化数据的挑战与机遇 首…

堆【数据结构C语言版】【 详解】

目录-笔记整理 一、思考二、堆概念与性质三、堆的构建、删除、添加1. 构建2. 删除3. 添加 四、复杂度分析4.1 时间复杂度4.2 空间复杂度 五、总结 一、思考 设计一种数据结构&#xff0c;来存放整数&#xff0c;要求三个接口&#xff1a; 1&#xff09;获取序列中的最值&#…

Thinkphp/Laravel旅游景区预约系统的设计与实现

目录 技术栈和环境说明具体实现截图设计思路关键技术课题的重点和难点&#xff1a;框架介绍数据访问方式PHP核心代码部分展示代码目录结构解析系统测试详细视频演示源码获取 技术栈和环境说明 采用PHP语言开发&#xff0c;开发环境为phpstudy 开发工具notepad并使用MYSQL数据库…

景联文科技入选《2024中国AI大模型产业图谱2.0版》数据集代表厂商

近日&#xff0c;大数据产业领域头部媒体数据猿携手上海大数据联盟联合发布了备受瞩目的《2024中国AI大模型产业图谱2.0版》。以大数据与AI为代表的智能技术为主要视角&#xff0c;聚焦全产业链&#xff0c;为业内提供更为专业直观的行业指导。 景联文科技凭借高质量数据集&…

基于大数据的学生体质健康信息系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

Vue Mini基于 Vue 3 的小程序框架

新的小程序框架 https://vuemini.org/ Vue Mini 是一个基于 Vue 3 的小程序框架&#xff0c;它允许开发者利用 Vue 3 的强大功能来构建微信小程序。Vue Mini 的核心优势在于它的响应式系统和组合式 API&#xff0c;这些特性让开发者能够以一种更声明式、更高效的方式来编写和…

江科大笔记——新建工程

STM32的开发方式 目前STM32的开发方式主要有基于寄存器的方式、基于标准库的方式&#xff08;库函数的方式&#xff09;、基于HAL库的方式&#xff1a; 基于库函数的方式是使用ST官方提供的封装好的函数&#xff0c;通过调用这些函数来间接地配置寄存器。基于HAL库的方式可以…

【机器学习(七)】分类和回归任务-K-近邻 (KNN)算法-Sentosa_DSML社区版

文章目录 一、算法概念二、算法原理&#xff08;一&#xff09;K值选择&#xff08;二&#xff09;距离度量1、欧式距离2、曼哈顿距离3、闵可夫斯基距离 &#xff08;三&#xff09;决策规则1、分类决策规则2、回归决策规则 三、算法优缺点优点缺点 四、KNN分类任务实现对比&am…

【CKA】二、节点管理-设置节点不可用

2、节点管理-设置节点不可用 1. 考题内容&#xff1a; 2. 答题思路&#xff1a; 先设置节点不可用&#xff0c;然后驱逐节点上的pod 这道题就两条命令&#xff0c;直接背熟就行。 也可以查看帮助 kubectl cordon -h kubectl drain -h 参数详情&#xff1a; –delete-empty…

【COSMO-SkyMed系列的4颗卫星主要用途】

COSMO-SkyMed系列的4颗卫星主要用于提供一个多用途的对地观测平台&#xff0c;服务于民间、公共机构、军事和商业领域。以下是这4颗卫星的主要用途&#xff1a; 民防与环境风险管理&#xff1a; 卫星的高分辨率雷达图像可用于监测自然灾害&#xff0c;如地震、洪水、滑坡等&am…

【计算机网络】网络层详解

文章目录 一、引言二、IP 基础知识1、IP 地址2、路由3、IP报文4、IP报文的分片与重组 三、IP 属于面向无连接型四、IP协议相关技术1、DNS2、ICMP3、NAT技术4、DHCP 一、引言 TCP/IP的心脏是网络层。这一层主要由 IP 和 ICMP 两个协议组成。网络层的主要作用是“实现终端节点之…

Redis进阶篇 - 缓存穿透、缓存击穿、缓存雪崩问题及其解决方案

文章目录 1 文章概述2 缓存穿透2.1 什么是缓存穿透&#xff1f;2.2 缓存穿透的解决方法2.2.1 做好参数校验2.2.2 缓存无效Key2.2.3 使用布隆过滤器2.2.4 接口限流 3 缓存击穿3.1 什么是缓存击穿&#xff1f;3.2 缓存击穿的解决方法3.2.1 调整热点数据过期时间3.2.2 热点数据预热…

Postgresql怎么查询数据库中所有的表,odoo17数据库最依赖表整理

今天遇到了一个需求,需要梳理odoo中数据库表的分类,所以想要知道怎么查询当前数据库中所有的表,特此记录. 一个简单的SQL语句: select * from pg_tables;得到的结果如下: 显然这个有点杂乱,我们换一个SQL语句: select tablename from pg_tables where schemanamepublic不过…

软件测试学习笔记丨Mock的价值与实战

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/32331 一、Mock的价值与意义 1.1 简介 测试过程中&#xff0c;对于一些不容易构造或获取的对象&#xff0c;用一个虚拟的对象来替代它&#xff0c;达到相同的效果&#xff0c;这个虚拟的对象…

启动服务并登录MySQL9数据库

【图书推荐】《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;》-CSDN博客 《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) Windows平台下安装与配置MyS…

Activiti 工作流大致了解

一、什么是 Activiti 简而言之&#xff0c;就是系统的流程图&#xff0c;如&#xff1a;请假审批流程、账单审批流程等。 二、mysql与pom配置 mysql要使用jdbc:mysql://localhost:3306/activiti?autoReconnecttrue pom文件要添加关键依赖 <!--activiti核心依赖--> &…

makefile和CMakeLists/C++包管理器

make 大家可能会很奇怪&#xff0c;都什么年代了&#xff0c;还学makefile&#xff0c;cmake都有些过时了&#xff0c;为什么还要再学这个呢&#xff1f; 我是这么看待这个问题的&#xff0c;cmake跨平台性还是很有有优势的&#xff0c;有着多年积累的底蕴&#xff0c;借助大模…

IDE 使用技巧与插件推荐全面指南

目录 目录 常用IDE概述 Visual Studio Visual Studio Code IntelliJ IDEA PyCharm Eclipse IDE 使用技巧 通用技巧 Visual Studio 专属技巧 Visual Studio Code 专属技巧 IntelliJ IDEA 专属技巧 插件推荐 Visual Studio 插件 Visual Studio Code 插件 IntelliJ…

STM32 实现 UDP 广播通信

目录 一、引言 二、准备工作 1.硬件准备 2.软件准备 三、LWIP 协议栈的配置与初始化 1.添加 LWIP 源文件 2.配置 LWIP 3.初始化 LWIP 四.创建 UDP 广播套接字 1.创建 UDP 控制块 2.绑定本地端口 五、设置 UDP 广播选项 1.设置广播地址 2.设置广播选项 六、发…