给定任意一个较短的子串,和另一个较长的字符串,
判断短的字符串是否能够由长字符串中的字符构建出来,且长串中的每个字符只能用一次。
// 思路很简单,关键在于,不要多次使用indexOf,那么每次都是n的时间复杂度
// 所以会通过率很低,解决办法就是使用字典存储来代替长长的字符串,这样就可以不去使用indexOf
var line=readline().split(' ')
var small=line[0];
var big=line[1];
// 判断长度
if(small.length>big.length){
var tem=small;
small=big;
big=tem;
}
big=big.split('')
var flag=true;
// 如果每次都使用indexOf,那么会搜索多次big数组,时间复杂度就很大
// 所以最好把big设置为字典
var mymap={}
for(var j=0;j<big.length;j++){
if(mymap[big[j]]){
mymap[big[j]]++
}else{
mymap[big[j]]=1;
}
}
for(var i=0;i<small.length;i++){
if(mymap[small[i]]>0){
mymap[small[i]]--;
}else{
console.log("false")
flag=false
break;
}
}
if(flag){
console.log("true")
}
前端基础笔记——短字符串
最新推荐文章于 2022-09-07 08:36:07 发布