华为OD机试真题 JavaScript 实现【关联子串】【2023Q1 100分】,附详细解题思路

news2024/11/25 4:34:08

在这里插入图片描述

一、题目描述

给定两个字符串str1和str2,str1进行排列组合只要有一个为str2的子串则认为str1是str2的关联子串,请返回子串在str2的起始位置,若不是关联子串则返回-1。

二、输入描述

qwe dsgfasgfwe

三、输出描述

-1

四、解题思路

  1. 读取输入的两个字符串str1和str2;
  2. 获取str1和str2的长度,分别赋值给变量a和b;
  3. 初始化变量index为-1,用于记录关联子串在str2中的起始位置;
  4. 使用一个循环,从0遍历到b-a,表示在str2中可能存在关联子串的起始位置;
  5. 在每次循环中,通过str2的substring方法截取长度为a的子串,从当前位置i开始截取;
  6. 调用check方法判断截取得到的子串是否为关联子串。如果是关联子串,将当前位置i赋值给index,并跳出循环;
  7. 输出index的值,即关联子串在str2中的起始位置。如果没有找到关联子串,则输出-1。

该算法使用滑动窗口的思想,通过遍历str2中的每个可能的起始位置,将长度为a的子串与str1进行比较,判断是否为关联子串。

在check方法中,使用两个嵌套循环,分别遍历str1和截取得到的子串的字符,通过比较字符是否相等来判断是否为关联子串。

算法的时间复杂度为O((b-a) * a),其中a为str1的长度,b为str2的长度。在最坏情况下,需要遍历所有可能的起始位置,并对每个位置的子串进行比较。

五、JavaScript算法源码

function calculate(str1, str2) {
    const a = str1.length;
    const b = str2.length;
    // 记录关联子串在str2中的起始位置
    let index = -1;

    // 在str2中可能存在关联子串的起始位置
    for (let i = 0; i <= b - a; i++) {
        // 如果是关联子串,将当前位置i赋值给index,并跳出循环
        if (check(str1, str2.substring(i, i + a))) {
            index = i;
            break;
        }
    }

    return index;
}

// 判断截取得到的子串是否为关联子串
function check(a, b) {
    const count = a.length;
    const list = [...b];

    for (let i = 0; i < count; i++) {
        for (let j = 0; j < list.length; j++) {
            if (a.charAt(i) === list[j]) {
                list.splice(j, 1);
                break;
            }
        }
    }

    return list.length === 0;
}

六、效果展示

这道题看似比较简单,其实还是蛮复杂的,大家一定要好好思考思考~~

1、输入

aav nezhajava

2、输出

6

3、说明

题目要求:

str1进行排列组合只要有一个为str2的子串则认为str1是str2的关联子串,输出子串在str2的起始位置。

aav排列一下变为ava,是nezhajava的关联子串,起始位置为6。

在这里插入图片描述

4、换个思路

虽然avaa,调整顺序可以变为aava,与nezhajava很类似,但是中间隔着一个j,故不是关联子串,输出-1。

在这里插入图片描述


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

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

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

在这里插入图片描述

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

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

相关文章

009、体系架构之HTAP

HTAP HTAP技术传统的HTAP解决方案HATP的要求TiDB的HTAP架构TiDB的HTAP特性使用场景 MPP HTAP技术 传统的HTAP解决方案 HATP的要求 可扩展性 分布式事务分布式存储 同时支持OLTP与OLAP 同时支持行存和列存OLTP与OLAP业务隔离 实时性 行存与列存数据实时同步 TiDB的HTAP架构 …

Committer 迎新!这次是来自阿里云的同学

点击蓝字 关注我们 迎新&#xff01; 截至今天&#xff0c;Apache DolphinScheduler 项目在 GitHub 上的 Star 数已突破 10.6K&#xff0c;贡献者人数也突破了 470 人。社区的不断壮大&#xff0c;离不开每位 Contributor 的支持。 最近&#xff0c;Apache DolphinScheduler 又…

AI模型部署实战:利用CV-CUDA加速视觉模型部署流程

本文首发于公众号【DeepDriving】&#xff0c;欢迎关注。 CV-CUDA简介 随着深度学习技术在计算机视觉领域的发展&#xff0c;越来越多的AI算法模型被用于目标检测、图像分割、图像生成等任务中&#xff0c;如何高效地在云端或者边缘设备上部署这些模型是工程师迫切需要解决的问…

Android 13(T) - 智能指针

Android有一套自己的智能指针管理办法&#xff0c;并且将其运用在源码的各个角落&#xff0c;所以学习Media框架之前&#xff0c;我们有必要先了解下Android智能指针。 本节代码源自于Android 13(T)&#xff0c;参考 (aospxref.com) 1 概述 与智能指针相关的总共有5个类&#…

某小厂面试加答案(6.15)

看 Java 面试题就去 www.javacn.site 磊哥新推出《企业面经和答案》栏目&#xff0c;最近会持续更新&#xff0c;欢迎大家订阅此账号查看&#xff0c;或访问 www.javacn.site 查看。 面经来源于牛客&#xff0c;如下图所示&#xff1a; https://www.nowcoder.com/feed/main/det…

OpenAI的创始人World Coin项目介绍

&#x1f3af; 在一个崇高的目标支持下&#xff0c;不停地工作&#xff0c;即使慢&#xff0c;也一定会获得成功。—— 爱因斯坦 如果你对项目感兴趣请联系v&#xff1a;weixin605405145 一、项目速览 项目背景 Worldcoin由OpenAI的创始人Sam Altman于2019年创立&#xff0c;就…

【C++】的继承

继承的概念及定义 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象程序设计的层次结构…

010、体系架构之TiFlash

TiFlash TiFlash 功能架构异步复制一致性读取场景选择是选择TiKV还是TiFLash TiFlash 功能 异步复制一致性读取(写虽然是异步&#xff0c;但读可以做到一致性)引擎智能选择计算加速 架构 TiFLASH 也是通过raft 算法进行同步&#xff0c;但它不怎么消耗资源&#xff0c;因为它…

ProGuard 进阶系列(二)配置解析

书接上文&#xff0c;从开源库中把代码下载到本地后&#xff0c;就可以在 IDE 中进行运行了。从 main 方法入手&#xff0c;可以看到 ProGuard 执行的第一步就是去解析参数。本文的内容主要分析源码中我们配置的规则解析的实现。 在上一篇文章末尾&#xff0c;在 IDE 中&#x…

Vue Router4

后端路由 客户端请求不同的URL服务器匹配URL并给一个Controller处理Controller处理完返回渲染好的HTML页面或数据给前端 优点&#xff1a; 不需要单独加载js和css&#xff0c;直角交给浏览器展示&#xff0c;有利于SEO优化 缺点&#xff1a; 页面有后端人员编写或由前端人员…

告别里程焦虑:深蓝S7超级增程打造超长续航

提起新能源汽车&#xff0c;估计许多人第一时间都会想要查看它的续航里程。 虽然如今的新能源汽车在续航里程上较过去已经有了很大改进&#xff0c;但是稀缺的充电桩和漫长的充电时间&#xff0c;仍然无法让需要长途出行的用户摆脱里程焦虑。 那么问题就来了&#xff1a;有没有…

基于协同过滤算法的外贸出口电子电器产品的推荐系统的设计与实现源码+文档

博主介绍&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 项目名称 基于协同过滤算法的外贸出口电子电器产品的推荐系统的设计与实现源码文档 视频演示 https://www.bilibili.com/video/BV1HW4y197Fe/ 系统介绍 摘 要 …

dubbo源码之-ExtensionInjector

dubbo源码之-ExtensionInjector 概述源码入口Extension 是如何获取到&#xff1f;SpiExtensionInjector 概述 其实ExtensionInjector 非常简单&#xff0c; 我们知道dubbo有ioc注入的功能&#xff0c; 是靠的set方法注入&#xff0c;对应的底层源码主要是ExtensionInjector 如…

MySQL数据库语言一、DDL

&#x1f618;作者简介&#xff1a;正在努力的99年打工人。 &#x1f44a;宣言&#xff1a;人生就是B&#xff08;birth&#xff09;和D&#xff08;death&#xff09;之间的C&#xff08;choise&#xff09;&#xff0c;做好每一个选择。 &#x1f64f;创作不易&#xff0c;动…

华为OD机试真题B卷 JavaScript 实现【分班】,附详细解题思路

一、题目描述 幼儿园两个班的小朋友在排队时混在了一起&#xff0c;每位小朋友都知道自己是否与前面一位小朋友是否同班&#xff0c;请你帮忙把同班的小朋友找出来。 小朋友的编号为整数&#xff0c;与前一位小朋友同班用Y表示&#xff0c;不同班用N表示。 二、输入描述 输…

uniapp/手机APP使用支付宝支付(服务端)

博主介绍&#xff1a;✌全网粉丝4W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战、定制、远程&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面…

chatgpt赋能python:Python接口应用于SEO的指南

Python接口应用于SEO的指南 Python成为了web开发中最流行的语言之一&#xff0c;而且尤其在SEO领域中被广泛应用。一些Python库和框架可帮助SEO团队实现其目标&#xff0c;如排名跟踪&#xff0c;爬取数据&#xff0c;进行网站分析&#xff0c;等等。在本文中&#xff0c;我们…

基于Hexo和Butterfly创建个人技术博客,(9) 优化butterfly主题配置文章版本

Butterfly官方网站&#xff0c;请 点击进入 本章目标&#xff1a; 掌握butterfly主题对文章的配置&#xff0c;熟悉并可按需配置到个人的博客站点中&#xff0c;本章内容是一个必会章节&#xff0c;不仅包括文章的UI美化、SEO相关配置还包括其它增加的功能&#xff0c;内容不多…

英语不好能不能学编程?

入门教程、案例源码、学习资料、读者群 请访问&#xff1a; python666.cn 大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; 常有人问我&#xff1a;我英语不好&#xff0c;想学编程行不行&#xff1f; 这个问题需要分情况讨论。 1. 可以学 如果你因为担心自己英语不…

chatgpt赋能python:Python怎么用?Python编程的入门指南

Python怎么用&#xff1f;Python编程的入门指南 Python是一种流行的高级编程语言&#xff0c;它被广泛应用于数据分析、机器学习、Web开发、自动化测试等领域。Python语言非常容易学习和使用&#xff0c;因此非常适合初学者和有经验的开发人员。在这篇文章中&#xff0c;我们将…