当前位置: 首页 > article >正文

华为OD机试真题(Java),开元音统计(100%通过+复盘思路)

在这里插入图片描述

一、题目描述

相对开音节构成的结构为辅音+元音(aeiou)+辅音(r除外)+e,常见的单词有bike cake,给定一个字符串,以空格为分隔符。
反转每个单词的字母,若单词中包含如数字等其他非字母时不进行反转,反转后计算其中含有相对开音节结构的子串个数(连续子串中部分字符可以重复)。

二、输入描述

字符串 以空格分割的多个单词,长度<10000 字母只考虑小写。

  1. 相对开音节构成的结构为辅音+元音(aeiou)+辅音(r除外)+e,共计4个字母;
  2. 若单词中包含如数字等其他非字母时不进行反转;
  3. 连续子串中部分字符可以重复;
  4. 字母只考虑小写;

三、输出描述

含有相对开音节结构的子串个数。

四、Java算法源码

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String[] words = scanner.nextLine().split(" ");

    int count = 0;
    for (int i = 0; i < words.length; i++) {
        String word = words[i];
        // 长度小于4的单词不用考虑
        if (word.length() < 4) {
            continue;
        }

        // 只考虑小写字母
        if (!word.matches("[a-z]+")) {
            continue;
        }

        // 如果值包含字母,不含数字和特殊字符,进行翻转
        StringBuilder builder = new StringBuilder();
        for (int j = 0; j < word.length(); j++) {
            builder.append(word.charAt(j));
        }
        word = builder.reverse().toString();

        // 反转后计算其中含有相对开音节结构的子串个数
        // 相对开音节构成的结构为辅音+元音(aeiou)+辅音(r除外)+e
        // 连续子串中部分字符可以重复
        String subWord;
        for (int j = 0; j < word.length(); j++) {
            if (j + 4 > word.length()) {
                break;
            }
            subWord = word.substring(j, j + 4);

            // 第1个为辅音,非元音
            if (subWord.substring(0, 1).matches("[aeiou]")) {
                continue;
            }
            // 第2个为元音
            if (!subWord.substring(1, 2).matches("[aeiou]")) {
                continue;
            }
            // 第3个为辅音,r也除外
            if (subWord.substring(2, 3).matches("[aeiour]")) {
                continue;
            }
            // 第4个是e
            if (!subWord.substring(3, 4).matches("[e]")) {
                continue;
            }
            count++;
        }
    }
    System.out.println(count);
}

五、效果展示

  • 输入:ekam a ekac
  • 输出:2

说明:反转后为 make a cake 其中make和cake为相对开音节子串, 返回2。
在这里插入图片描述

  • 输入:!ekam a ekekac
  • 输出:2

说明:

 反转后为 !ekam a cakeke,
 因为!ekam含有非英文字母,所以未反转,
 其中 cake和keke 为相对开音节子串 返回2。

在这里插入图片描述

🏆本文收录于,华为OD机试2023(Java)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述


http://www.kler.cn/a/14659.html

相关文章:

  • 介绍与评测Intel HLE与RTM技术
  • 如何用链表实现LRU缓存淘汰算法
  • 【android专题】学习android,第一天学习:软件和组件了解
  • AI | 浅谈AI技术以及其今后发展
  • 随机模型预测控制(SMPC)——考虑概率约束(Matlab代码实现)
  • 业内首批!安全狗入选Gartner《云原生应用保护平台市场指南》报告
  • 【小技巧】word文档编辑技巧(一)
  • SD卡恢复怎么做?内存卡数据恢复,3个方法!
  • 手把手教你安装telnet(离线方式+在线方式)
  • js特殊对象 - RegExp对象(正则表达式)
  • Linux文件操作基础及基本I/O函数使用
  • 如何雇佣一名全民开发者?
  • Mysql 索引
  • 无线电设备发射型号核准证(SRRC)
  • 数据预处理简单介绍,并给出具体的代码示例
  • Ceph入门到精通- storcli安装
  • spring-boot下Hikari、Druid的使用
  • 后台优化主要分为哪些?工作内容及流程是什么?
  • 如何从有故障的 SD 卡恢复文件
  • day35—选择题