华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

news2024/11/23 21:55:13

在这里插入图片描述

一、题目描述

相对开音节构成的结构为辅音+元音(aeiou)+辅音(r除外)+e,常见的单词有life,time,woke,coke,joke,note,nose,communicate,use,gate,same,late等。

给定一个字符串,以空格为分隔符,反转每个单词中的字母,若单词中包含如数字等其他非字母时不进行反转。

反转后计算其中含有相对开音节结构的子串个数(连续的子串中部分字符可以重复)。

二、输入描述

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

三、输出描述

含有相对开音节结构的子串个数,注:个数<10000

四、解题思路

  1. 定义一个列表aeiouList,存储元音字母(a, e, i, o, u);
  2. 从输入中读取字符串,并按空格分割为多个单词,存储在input数组中;
  3. 初始化total为0,表示含有相对开音节结构的子串个数;
  4. 遍历input数组中的每个单词s;
  5. 对于每个单词,首先判断是否只包含字母,如果不是,则跳过该单词;
  6. 如果单词只包含字母,则调用checkKai方法计算该单词中含有相对开音节结构的子串个数,并累加到total中;
    • 反转每个单词中的字母;
    • 每4个字符取出一个子串;
    • 判断字符串是否是相对开音节,total++;
      • 相对开音节构成的结构为辅音+元音(aeiou)+辅音(r除外)+e;
      • 定义一个元音下角标yuanIndex;
      • 找到元音的下角标;
      • 通过“相对开音节构成的结构为辅音+元音(aeiou)+辅音(r除外)+e”判断是否是相对开音节;
  7. 输出total作为结果。

五、Java算法源码

function getXDKYJCount(str) {
    // 定义一个列表aeiouList,存储元音字母(a, e, i, o, u)
    const aeiouList = ['a', 'e', 'i', 'o', 'u'];
    // 从输入中读取字符串,并按空格分割为多个单词,存储在数组arr中
    const arr = str.split(' ');
    // 初始化total为0,表示含有相对开音节结构的子串个数
    let total = 0;
    // 遍历input数组中的每个单词
    for (let i = 0; i < arr.length; i++) {
        const content = arr[i];
        let flag = true;

        for (let j = 0; j < content.length; j++) {
            // 对于每个单词,首先判断是否只包含字母,如果不是,则跳过该单词
            if (content[j] < 'a' || content[j] > 'z') {
                flag = false;
                break;
            }
        }

        // 如果单词只包含字母,则调用checkKai方法计算该单词中含有相对开音节结构的子串个数,并累加到total中
        if (flag) {
            total += checkKai(content);
        }
    }

    // 输出total作为结果
    return total;
}

/**
 * 计算该单词中含有相对开音节结构的子串个数,并累加到total中
 */
function checkKai(str) {
    // 反转每个单词中的字母
    const strTemp = str.split('').reverse().join('');
    let left = 0;
    let right = 0;
    let total = 0;
    let tem = '';

    while (right <= str.length) {
        tem = strTemp.substring(left, right);
        // 每4个字符取出一个子串
        if (tem.length < 4) {
            right++;
            continue;
        }
        // 字符串是否是相对开音节
        if (check(tem)) {
            total++;
        }

        left++;
        right++;
    }

    return total;
}

/**
 * 字符串是否是相对开音节
 */
function check(str) {
    const aeiouList = ['a', 'e', 'i', 'o', 'u'];

    // 相对开音节构成的结构为辅音+元音(aeiou)+辅音(r除外)+e
    if (!aeiouList.includes(str[0]) && str[str.length - 1] === 'e') {
        // 元音下角标
        let temYuan = 0;
        for (let i = 1; i < str.length - 1; i++) {
            // 找到元音的下角标
            if (aeiouList.includes(str[i])) {
                temYuan = i;
            }
            // 相对开音节构成的结构为辅音+元音(aeiou)+辅音(r除外)+e
            if (temYuan !== 0 && !aeiouList.includes(str[i]) && str[i] !== 'r' && i > temYuan) {
                return true;
            }
        }
    }
    return false;
}

六、效果展示

1、efil emit ekow反转之后是life,time,woke,都是相对开音节子串,因此返回结果3。

在这里插入图片描述

2、efil emit 5ekow反转之后是life,time,5ekow,因5ekow含非英文字符所以未反转,因此返回结果2。

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

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

在这里插入图片描述

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

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

相关文章

递归算法在编程中的重要应用

递归算法在编程中的重要应用 引言一、引言1.1、什么是递归算法&#xff1f;1.2、递归算法的特点和优缺点 二、树和图的遍历2.1、深度优先搜索&#xff08;DFS&#xff09;和广度优先搜索&#xff08;BFS&#xff09;2.2、二叉树遍历、树的深度、节点个数等问题2.2.1、二叉树遍历…

关于对【oracle索引】的理解与简述

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/131094864 出自【进步*于辰的博客】 无论使用的是oracle、mysql&#xff0c;亦或者其他数据库&a…

如何吃透一个Java项目?

现在Austin的文档我觉得还是比较全的&#xff0c;但到了看代码的时候&#xff0c;可能有的同学就不知道应该怎么看&#xff0c;有想知道模块之间的调用链路&#xff0c;有想一点一点把细节给全看了。这时候就很可能在项目里犯迷糊了&#xff0c;绕不出不来了。 Java开源项目消息…

MySQL的下载安装以及环境配置---图文教程

目录 一.下载 二.安装 三.设置环境变量 四.MySQL数据库的使用及注意事项 SQL语句注意事项 一.下载 1.打开 MySQL 数据库的网站。 2.往下滑 3.进入新的页面之后&#xff0c;点击 MySQL Installer for Windows 4.进入新的页面时&#xff0c;就可以下载MySQL数据库了&#x…

数据结构05:树的定义与双亲、孩子表示法[更新中]

参考用书&#xff1a;王道考研《2024年 数据结构考研复习指导》 参考用书配套视频&#xff1a;5.1.1 树的定义和基本术语_哔哩哔哩_bilibili 特别感谢&#xff1a; Chat GPT老师[部分名词解释、修改BUG]、BING老师[封面图]~ 备注&#xff1a;博文目前是未完成的状态&#xff…

Web安全:拿到 Web 服务器 最高权限.(vulntarget 靶场 A)

Web安全&#xff1a;拿到 Web 服务器 最高权限. Web 服务器一般指网站服务器&#xff0c;是指驻留于因特网上某种类型计算机的程序&#xff0c;可以处理浏览器等Web客户端的请求并返回相应响应&#xff0c;也可以放置网站文件&#xff0c;让全世界浏览&#xff1b;可以放置数据…

43 最佳实践-性能最佳实践-IOThread配置

文章目录 43 最佳实践-性能最佳实践-IOThread配置43.1 概述43.2 配置说明 43 最佳实践-性能最佳实践-IOThread配置 43.1 概述 KVM平台上&#xff0c;对虚拟磁盘的读写在后端默认由QEMU主线程负责处理。这样会造成如下问题&#xff1a; 虚拟机的I/O请求都由一个QEMU主线程进行…

基于springboot的数码论坛系统设计(Java、MySQL、B/S)

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;数码论坛 获取源码源文件论文报告PPT 网络的广泛应用给生活带来了十分的便利。所以把数码论坛与现在网络相结合&#xff0c;利用java技术建设数码论坛系统&#xff0c;实现数码论坛的信息化。则对于进一步提高数码论坛发展…

Linux 下pause函数是如何实现的?

当你在程序中调用 pause() 函数时&#xff0c;它会使得你的程序停止执行&#xff0c;直到有一个信号被捕获。这是通过系统调用实现的。系统调用会使得程序从用户模式切换到内核模式。 这里是 pause() 函数的基本工作原理&#xff1a; 当你的程序调用 pause() 函数时&#xff…

python基础知识(十):类

目录 1. 类和方法的概念2. 类的定义3. 类的继承4. 重写父类的方法 1. 类和方法的概念 类&#xff1a;用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。举个例子&#xff0c;狗类就是狗的集合&#xff0c;每条狗都是狗…

kali学习笔记(二)

一、关闭自动锁屏 关闭自动锁屏对于测试人员来说&#xff0c;可以按照自己的习惯来设置&#xff0c;不然kali会过十分钟就锁屏&#xff0c;有的时候会比较不方便。 1、使用root账号登录&#xff0c;在display设置选项中做如下设置。 2、把休眠选项关掉。 二、创建快照 关机创…

透视Linux内核,BPF 深度分析与案例讲解

本次主要对BPF的部分原理、应用案例上进行一次分析记录。 BPF介绍 当内核触发事件时&#xff0c;BPF虚拟机能够运行相应的BPF程序指令&#xff0c;但是并不是意味着BPF程序能访问内核触发的所有事件。将BPF目标文件加载到BPF虚拟机时&#xff0c;需要确定特定的程序类型&…

SpringBoot中的定时任务@Scheduled的使用

1.Scheduled注解介绍 在spring boot的项目中需要使用到定时任务的时候&#xff0c;可以使用Scheduled注解&#xff0c;这只是在一个JVM进程中很适用&#xff0c;如果涉及到服务器是集群的情况下&#xff0c;建议使用任务调度平台。这样任务调度平台会在多台服务器中选择一台进…

【linux】在Ubuntu下部署nginx——nginx的安装与卸载

介绍 这里是小编成长之路的历程&#xff0c;也是小编的学习之路。希望和各位大佬们一起成长&#xff01; 以下为小编最喜欢的两句话&#xff1a; 要有最朴素的生活和最遥远的梦想&#xff0c;即使明天天寒地冻&#xff0c;山高水远&#xff0c;路远马亡。 一个人为什么要努力&a…

Think PHP6+Swagger3

swagger是一个解决接口规范化、标准化、文档化的一个组件&#xff0c;既可以直接自动生成resutful接口文档又能进行功能测试的一个web服务。本文是think PHP6结合swagger3的一个记录过程。 composer安装ThinkPHP 一般安装最新稳定版本&#xff0c;不一定是最新版本 composer…

怎么通过Fiddler对APP进行抓包?以及高级应用场景分析

目录 前言 简单说下Fiddler的抓包原理&#xff1a; 使用fiddler代理远程捕获APP请求 Fiddler高级应用场景介绍 1、url地址重写 fiddler抓包详细教程&#xff1a;全网抓包天花板教程&#xff0c;B站讲的最详细的Fiddler/Charles抓包教学视频。2小时包你学会_哔哩哔哩_bilibi…

软件测试之路已不再是坦途

去年下半年才跳了槽&#xff0c;过程非常顺利&#xff0c;没有经历大家所说的工作荒的境地&#xff0c;所以一直没有直观地感受到软件测试就业形势到底有多严峻。 近来看到一些机构频频发出某某测试员在糟糕的就业形势下逆袭拿下XXW的某厂offer&#xff0c;然后推荐测试进阶课…

Django学习笔记-配置Docker、Git环境与项目创建

笔记内容转载自AcWing的Django框架课讲义&#xff0c;课程链接&#xff1a;AcWing Django框架课。 CONTENTS 1. 配置Docker环境2. Django项目创建3. Django App创建 1. 配置Docker环境 首先拉取一个 Ubuntu 镜像&#xff1a; docker pull ubuntu:20.04创建容器后进入容器配置…

Splunk:构建安全监控解决方案(第 1 部分)

在我的网络安全训练营的最后几周&#xff0c;我们的最终项目之一是使用 Splunk Enterprise 为一个名为 VSI&#xff08;虚拟空间工业&#xff09;的虚构组织构建安全监控环境&#xff0c;对于那些可能不知道的人来说&#xff0c;它是一个 SIEM&#xff08;安全信息和事件管理器…

科一容易忘、容易混的点——图类

注意行人 和 人行横道区别 注意行人&#xff1a;黄色&#xff0c;里面是什么就注意什么 人行横道&#xff1a;正方形 “不得” xxx 的 就选择 【正确】 点火开关 1、LOCK档&#xff1a;这是一个锁止档&#xff0c;功能是当除了防盗系统和车内小灯以外&#xff0c;电路是完全关…