华为OD机试真题 JavaScript 实现【最多提取子串数目】【2023Q1 100分】

news/2024/11/30 8:20:41/

在这里插入图片描述

一、题目描述

给定由[a-z] 26 个英文小写字母组成的字符串 A和 B,其中A中可能存在重复字母,B 中不会存在重复字母,现从字符串 A 中按规则挑选一些字母,可以组成字符串 B。

挑选规则如下:

  1. 同一个位置的字母只能被挑选一次;
  2. 被挑选字母的相对先后顺序不能改变;

求最多可以同时从 A 中挑选多少组能组成B 的字符串。

二、输入描述

输入为 2行,第 1行输入字符串 A,第 2 行输入字符串 B,行首行尾无多余空格,其中 A、B 均由[a-z] 26 个英文小写字母组成。

  • 0<A.length<100,A 中可能包含重复字母;
  • 0<B.length<10,B 中不会出现重复字母;

三、输出描述

输出 1 行,包含 1个数字,表示最多可以同时从 A 中挑选多少组能组成 B 的字符串,行末无多余空格。

无需验证输入格式和输入数据合法性。

四、解题思路

1、将字符串A和字符串B转换为字符数组arrA和arrB。

2、初始化计数变量count为0,表示可以同时从A中挑选的组数。

3、使用两个指针i和j分别指向arrA和arrB的起始位置。

4、开始遍历arrA,当指针i小于A的长度时,执行以下操作:

  1. 检查arrA[i]和arrB[j]是否相等。如果相等,说明可以从A中挑选该位置的字母用于构造B,因此将arrA[i]置为’*'表示已经使用过;
  2. 将指针j后移一位,继续比较下一个位置的字母;
  3. 如果指针j达到B的末尾,说明已经成功匹配了一个B,此时将计数变量count加1,并将指针i和j重新置为0,以便继续寻找下一个匹配;
  4. 如果指针j未达到B的末尾,说明当前位置的字母无法匹配,继续将指针i后移一位,继续寻找下一个可能的匹配。

5、循环结束后,输出计数变量count,即为最多可以同时从A中挑选的组数。

通过上述算法,我们可以有效地计算出最多可以同时从A中挑选多少组能够组成B的字符串。

五、JavaScript算法源码

/*** 从字符串 A 中按规则挑选一些字母 组成字符串 B。** 同一个位置的字母只能被挑选一次;* 被挑选字母的相对先后顺序不能改变;*/
function calculate(a, b) {const arrA = a.split('');const arrB = b.split('');let count = 0;let i = 0;let j = 0;while (i < arrA.length) {if (arrA[i] === arrB[j]) {arrA[i] = '*';j++;}if (j === arrB.length) {i = 0;j = 0;count++;} else {i++;}}return count;
}

六、效果展示

1、输入

abcabc
abc

2、输出

2

3、说明

按照顺序,傻瓜式的从字符串A中取出两个B。哈哈

4、再输入

javajjjnezharrr
jar

5、再输出

2

6、再说明

javajjjnezharrr提取一个jar变为 vajjjnezha*rr,还可以再提取一个vajjnezh**r。

如果变为javajjjnezharrar,我猜想会输出3,你觉得呢?

动手试试吧~~

在这里插入图片描述


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

🏆本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述


http://www.ppmy.cn/news/368542.html

相关文章

usb万能驱动win7_IT知识大全:驱动程序详解!

对于计算机用户&#xff0c;基本都听过或者安装过驱动程序&#xff0c;每当我们将新硬件接入电脑主板上时&#xff0c;需要安装对应的驱动程序才能让硬件正常工作。 有不少用户在安装驱动程序时出现驱动不匹配&#xff0c;或者是在硬件使用一段时间后&#xff0c;驱动程序出现故…

一台计算机可以安装网络打印机和本地打印机,驱动人生如何安装网络打印机驱动和本地打印机驱动安装方法...

安装本地打印机 1、认清打印机型号&#xff0c;找到打印机的驱动光盘或者是从官方网站下载打印机驱动程序&#xff0c;或者使用万能驱动下载器驱动人生来下载打印机驱动程序 2、双击驱动程序进行安装&#xff0c;安装完毕后重起电脑查看一下。 3、打开控制面板- 双击“打印机和…

Mac MF打印机驱动程序安装(亲测MacOS11.6和Mac12.4都可以)

Mac MF 打印机驱动程序安装&#xff08;亲测MacOS11.6和Mac12.4都可以&#xff09; 打印机型号 个人理解应该是支持所有佳能MF系列的打印机&#xff0c;亲测CanaonMF4700打印机 在MacOS11.6和12.4上可以正常使用。 支持操作系统 macOS 12macOS 11macOS 10.15macOS 10.14mac…

Linux卸载打印机驱动,Ubuntu下安装打印机驱动(两种方法)

Ubuntu下安装打印机驱动(两种方法) 发布时间&#xff1a;2018-06-23 11:20, 浏览次数&#xff1a;1345 , 标签&#xff1a; Ubuntu 首先在ubuntu安装打印机驱动较之于Windows来说比较简单方便&#xff0c;下面介绍两种安装打印机的方法。 驱动库中有对应打印机的驱动 这里以HP …

基于Java在线医疗服务系统设计与实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

App 启动速度优化

前言​​​​​​​ APP打开的一瞬间速度快慢&#xff1b;就好比人的第一印象&#xff0c;快速的打开一个应用往往给人很舒服的体验。app经常性卡顿启动速度很慢&#xff0c;这无疑是对用户的流失。 启动方式介绍 APP启动的方式分为3种&#xff1a;冷启动、热启动、温启动。…

计算机系统相机怎么卸载,如何卸载摄像头驱动

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 以笔记本电脑为例&#xff0c;卸载摄像头驱动的方法是&#xff1a; 1、首先右键“我的电脑”、管理、设备管理器&#xff0c;找到图像设备。 2、然后在“图像设备”下的设备名称上点…

DELL笔记本webcom摄像头问题解决方法

问题1&#xff1a;在webcom中可以使用摄像头&#xff0c;但其他程序无法调用摄像头&#xff0c;并出现如“该内存不能为read”之类的提示。 解决方法1&#xff1a; 一次运行注册所有dll 运行 输入cmd 回车在命令提示符下输入 for %1 in (%windir%\system32*.dll) do regsvr32.…