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

品牌网站定制开发站长工具seo优化系统

品牌网站定制开发,站长工具seo优化系统,wordpress菜单下拉特效,电商网站建设济南建网站华为OD机试题库《C》限时优惠 9.9 华为OD机试题库《Python》限时优惠 9.9 华为OD机试题库《JavaScript》限时优惠 9.9 针对刷题难,效率慢,我们提供一对一算法辅导, 针对个人情况定制化的提高计划(全称1V1效率更高)。 看…

华为OD机试题库《C++》限时优惠 9.9

华为OD机试题库《Python》限时优惠 9.9

华为OD机试题库《JavaScript》限时优惠 9.9

针对刷题难,效率慢,我们提供一对一算法辅导, 针对个人情况定制化的提高计划(全称1V1效率更高)。

看不懂有疑问需要答疑辅导欢迎私VX: code5bug

华为OD机试真题

题目描述

给定两个字符串str1和str2,如果字符串str1中的字符,经过排列组合后的字符串中,只要有一个字符串是str2的子串,则认为str1是str2的关联子串。

若str1是str2的关联子串,请返回子串在str2的起始位置;

若不是关联子串,则返回-1。

输入描述

输入两个字符串,分别为题目中描述的str1、str2。

备注:

输入的字符串只包含小写字母;
两个字符串的长度范围[1, 100000]之间;

输出描述

若str1是str2的关联子串,请返回子串在str2的起始位置;

若不是关联子串,则返回-1。

若str2中有多个str1的组合子串,请返回最小的起始位置。

示例1

输入:
abc efghicbaiii输出:
5说明:
str2包含str1的一种排列组合(“cab”),此组合在str2的字符串起始位置为5(从0开始计数)

示例2

输入:
abc efghiccaiii输出:
-1说明:
“abc”字符串中三个字母的各种组合(abc、acb、bac、bca、cab、cba),str2中均不包含,因此返回-1

题解

我们需要判断字符串 str1 的任意排列是否是 str2 的子串。如果是,返回该子串在 str2 中的起始位置(最小位置);否则返回 -1。

解题思路

  1. 滑动窗口法:这是解决此类问题的经典方法。
    • 统计 str1 的字符频率。
    • str2 上维护一个与 str1 长度相同的滑动窗口。
    • 比较窗口内字符频率与 str1 的字符频率。
    • 如果匹配,返回当前窗口的起始位置;否则滑动窗口继续检查。

JavaScript

const rl = require('readline').createInterface({input: process.stdin,output: process.stdout,
});var iter = rl[Symbol.asyncIterator]();const readline = async () => (await iter.next()).value;// 在s2中查找与s1字符组成相同的子串(关联子串)的起始位置
function solve(s1, s2) {// 使用Map统计s1的字符频率const cnt1 = new Map();for (const c of s1) {cnt1.set(c, (cnt1.get(c) || 0) + 1);}const targetLen = s1.length;if (targetLen > s2.length) return -1;// 初始化滑动窗口(前targetLen个字符)const window = new Map();for (let i = 0; i < targetLen; i++) {const c = s2[i];window.set(c, (window.get(c) || 0) + 1);}// 检查初始窗口是否匹配if (compareMaps(cnt1, window)) {return 0;}// 滑动窗口遍历s2for (let i = targetLen; i < s2.length; i++) {// 移除窗口最左边的字符const leftChar = s2[i - targetLen];if (window.get(leftChar) === 1) {window.delete(leftChar);} else {window.set(leftChar, window.get(leftChar) - 1);}// 添加新进入窗口的字符const rightChar = s2[i];window.set(rightChar, (window.get(rightChar) || 0) + 1);// 检查当前窗口是否匹配if (compareMaps(cnt1, window)) {return i - targetLen + 1;}}return -1; // 未找到匹配子串
}// 比较两个Map是否相等(用于频率统计比较)
function compareMaps(map1, map2) {if (map1.size !== map2.size) return false;for (const [key, val] of map1) {if (map2.get(key) !== val) {return false;}}return true;
}// Author: code5bug
(async () => {const input = await readline();const [s1, s2] = input.trim().split(/\s+/);console.log(solve(s1, s2));rl.close();
})();

希望这个专栏能让您熟练掌握算法
整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏

http://www.dtcms.com/wzjs/328196.html

相关文章:

  • 毕业设计做网站的步骤免费seo在线工具
  • 做网站这么做合肥seo按天收费
  • 北京网站建设设计上海seo优化公司bwyseo
  • 郑州新闻最新消息今天关键词排名优化软件价格
  • 万网解压缩wordpress搜索引擎优化是什么意思
  • dede做漫画网站的案例seo优化推广技巧
  • 开发一个软件的流程做排名优化
  • 网站制作的核心技术一般网站推广要多少钱
  • 外管局网站收汇如何做延期灯塔seo
  • 吕子乔做网站一段台词360优化大师下载安装
  • 怎么做免费的网站b2b免费发布网站大全
  • 网站页面布局产品推广方式都有哪些
  • 做外贸有什么免费网站成都网站建设团队
  • 网站建设三方合同范本搜索引擎入口官网
  • 学院网站建设策划书seo长尾关键词优化
  • 想换掉做网站的公司河南网站公司
  • 凡科网怎么制作小程序宁波品牌网站推广优化
  • 个人网站 推荐抖音关键词优化
  • 做网站和做网页优化设计四年级上册语文答案
  • 房地产网站建设意义谷歌官网下载
  • 做竞赛的平台或网站免费男女打扑克的软件
  • 信阳网站网站建设东莞疫情最新消息今天新增
  • 下沙做网站的公司专门做排名的软件
  • 做网站链接怎么做腾讯企点
  • 网站建设开发html国内seo工具
  • 搞基怎么做视频网站seo排名软件哪个好用
  • 网站建设技术教程搜狗seo快速排名公司
  • 二手购物网seo怎么做
  • 你博客使用的WordPress吧seo学途论坛网
  • 盗用网站模板资源企业网站排名优化价格