相对开音节
2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷
华为OD机试双机位C卷真题目录点击查看: 【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)
题目描述
相对开音节构成的结构为辅音+元音(aeiou)+辅音(r除外)+e,常见的单词有bike、cake等。
给定一个字符串,以空格为分隔符,反转每个单词中的字母,若单词中包含如数字等其他非字母时不进行反转。
反转后计算其中含有相对开音节结构的子串个数(连续的子串中部分字符可以重复)。
输入描述
字符串,以空格分割的多个单词,字符串长度<10000,字母只考虑小写
输出描述
含有相对开音节结构的子串个数,注:个数<10000
示例1
输入
ekam a ekac
输出
2
说明
反转后为 make a cake 其中make、cake为相对开音节子串,返回2。
示例2
输入
!ekam a ekekac
输出
2
说明
反转后为!ekam a cakeke 因!ekam含非英文字符所以未反转,其中 cake、keke为相对开音节子串,返回2。
解题思路
题目分析
题目要求统计字符串中满足“相对开音节”结构的子串个数。
相对开音节的定义:辅音 + 元音(a, e, i, o, u)+ 辅音(r 除外)+ e。
结构长度固定为 4。
题目还有一个预处理步骤:
- 单词反转:输入的字符串由空格分隔为多个单词。
- 反转规则:如果单词只包含小写字母,则将其反转;如果包含非字母字符(如数字、标点等),则保持原样不反转。
- 统计子串:在处理后的字符串中,统计满足相对开音节结构的子串个数(子串可以重叠)。
算法步骤
- 输入解析:读取一行字符串,按空格分割成单词数组。
- 单词处理:
- 遍历每个单词。
- 检查单词是否只包含字母(题目说明只考虑小写字母)。
- 如果全为字母,则将单词反转。
- 如果包含非字母,保持原样。
- 模式匹配:
- 相对开音节的模式可以表示为正则表达式:
[^aeiou][aeiou][^aeiour]e。 - 解释:
- 第 1 个字符:辅音
[^aeiou](非元音)。 - 第 2 个字符:元音
[aeiou]。 - 第 3 个字符:辅音且非 r
[^aeiour](非元音且非 r)。
- 第 1 个字符:辅音
- 相对开音节的模式可以表示为正则表达式:
订阅专栏 解锁全文
&spm=1001.2101.3001.5002&articleId=158070733&d=1&t=3&u=855bfb437543432291dca50fa166c5dd)
242

被折叠的 条评论
为什么被折叠?



