gpt4 book ai didi

javascript - 比较两个字符串时如何避免嵌套循环?

转载 作者:行者123 更新时间:2023-11-30 16:31:03 24 4
gpt4 key购买 nike

我编写了这段代码来检查一个单词是否可以由另一个字符串中可用的字母组成。例如,“wine”可以使用 str1 = "kkwlaiern"中包含的字母来书写。但是,我正在寻找一种更有效的方法来做到这一点。到目前为止,这是我的代码:

 function scramble(str1, str2) {
x =str1.split("");
y =str2.split("");
var h = 0;


for (i=0, g = y.length; i<g; i++){
for (j=0, f= x.length; j<f; j++){
if (x[j]==y[i]){
x.splice(j,1);
h++;
break;
}}
}
if( h == y.length){
return true;}
else{return false;}
}

如何在不嵌套“for”循环的情况下编写相同的函数?

最佳答案

声明一个大小为 26 的数组并将其初始化为 0(对应于英文字母的索引)。

使用 for 循环读取更大的字符串并在数组中递增它:

a[str1[i]-'a']++

接下来,读取较小的字符串并将其与数组的值进行比较:

if(a[str2[j]-'a']>0){
a[str2[j]-'a']--;
}

如果str2的所有元素都满足上述条件,则str2可以从str1派生。

关于javascript - 比较两个字符串时如何避免嵌套循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33314525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com