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

标签 javascript loops nested comparison processing-efficiency

我编写了这段代码来检查一个单词是否可以由另一个字符串中可用的字母组成。例如,“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/

相关文章:

javascript - mongodb 和 node.js 驱动程序未连接聊天休息 api

javascript - 将 model.obj 添加到 Three.MESH

javascript - Mapbox GL JS 更新图像叠加源

javascript - 助手如何通过名称动态调用组件,例如 {{component componentName}} 助手

android - 我怎样才能在android studio中打破这个循环

javascript - 如何循环遍历嵌套数组,然后使用 Javascript 以预定义的顺序存储输出

python - 循环函数

php - WooCommerce 产品 : Wrong product permalink in custom loop

Java:在嵌套静态类中引用外部类

ruby-on-rails - 使用 ActiveSupport::Concern 功能时,如何通过将 "nested"模块包含为该类的实例方法来将方法添加到类中?