当前位置: 首页> 房产> 家装 > 广州有什么好玩的地方景点推荐_东营定制网站建设服务_微信软文范例100字_软文网站发布平台

广州有什么好玩的地方景点推荐_东营定制网站建设服务_微信软文范例100字_软文网站发布平台

时间:2025/7/13 2:16:45来源:https://blog.csdn.net/Catherinemin/article/details/144728069 浏览次数:0次
广州有什么好玩的地方景点推荐_东营定制网站建设服务_微信软文范例100字_软文网站发布平台

LCR 014. 字符串的排列

给定两个字符串 s1s2,写一个函数来判断 s2 是否包含 s1 的某个变位词。

换句话说,第一个字符串的排列之一是第二个字符串的 子串

示例 1:

输入: s1 = "ab" s2 = "eidbaooo"
输出: True
解释: s2 包含 s1 的排列之一 ("ba").

示例 2:

输入: s1= "ab" s2 = "eidboaoo"
输出: False

提示:

  • 1 <= s1.length, s2.length <= 104
  • s1s2 仅包含小写字母

法1:滑动窗口

分析:

建立一个hash表,键是26个字母,对应值是各自出现的次数,为方便键0就代表a,1代表b这样。

看例子:s1 = "ab" s2 = "eidbaooo"

在这里插入图片描述

表格中没写的都是填充0。接着遍历后面的s2

在这里插入图片描述

i=2,遍历s2中的d,
counts[s2.charCodeAt(i) - ‘a’.charCodeAt(0)]–=counts[d-a]–=counts[3]–
counts[s2.charCodeAt(i - s1.length) - ‘a’.charCodeAt(0)]++=counts[e-a]++=counts[4]++

i=3,遍历s2中的b
counts[s2.charCodeAt(i) - ‘a’.charCodeAt(0)]–=counts[b-a]–=counts[1]–
counts[s2.charCodeAt(i - s1.length) - ‘a’.charCodeAt(0)]++=counts[i-a]++=counts[8]++

i=4,遍历s2中的a
counts[s2.charCodeAt(i) - ‘a’.charCodeAt(0)]–=counts[a-a]–=counts[0]–
counts[s2.charCodeAt(i - s1.length) - ‘a’.charCodeAt(0)]++=counts[d-a]++=counts[3]++

到这,counts全都为0,就返回true

 var checkInclusion = function(s1, s2) {if (s2.length < s1.length)  return false;let counts = new Array(26).fill(0);// 初始填充 counts 数组for (let i = 0; i < s1.length; ++i) {counts[s1.charCodeAt(i) - 'a'.charCodeAt(0)]++; // s1 计数 ++counts[s2.charCodeAt(i) - 'a'.charCodeAt(0)]--; // s2 计数 --}// 检查是否已匹配if (areAllZero(counts)) {return true;}// 滑动窗口// 滑动窗口的大小始终为 s1.length。for (let i = s1.length; i < s2.length; ++i) {counts[s2.charCodeAt(i) - 'a'.charCodeAt(0)]--;counts[s2.charCodeAt(i - s1.length) - 'a'.charCodeAt(0)]++;if (areAllZero(counts)) {return true;}}
};/*** 辅助函数:检查 counts 数组是否全部为零* @param {number[]} counts* @return {boolean}*/
function areAllZero(counts) {for (let count of counts) {if (count !== 0) {return false;}}return true;
}
关键字:广州有什么好玩的地方景点推荐_东营定制网站建设服务_微信软文范例100字_软文网站发布平台

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: