查找字符串中单词的字符,优化

乔·比恩

我正在做一些代码挑战,希望学习一些新知识。目前,我已经编写了一段代码,以一串随机字母查找给定单词的字符。

我认为regexp可能是最佳的性能选择(这是目标之一)。这段代码通过了检查,但是对于荒谬的长字符串来说却花费了太长时间。有什么办法可以改善吗?老实说这真的很丑。我尝试了几种方法,但我可能真的只是reg exp等领域的新手。

在所有if语句之前,我仅使用regexp,但如果str2(这是我要查找的单词)具有双字符,它将返回“ true”,因为它将计算已计数的字符。这就是为什么我使用replace来排除它们。那就是我所能得到的。

目标是如果可以重新排列str1的一部分以形成str2,则返回true,否则返回false。仅使用小写字母(az)。不包含标点符号或数字。例如scramble('aabbcamaomsccdd','逗号')应该返回true


function scramble (str1, str2)
{
var o = 0; // tracks amount of matched letters.
 for(i = 0; i < str2.length; i++)
 {
    var regex1 = new RegExp (str2[i]) ; // select letter from word that needs to be found
    if( regex1.test(str1) == true)// if selected character is found us replace to remove it from the random characters string for next iteration.
    {
      str1 = str1.replace(regex1 ,"");
      o++; // increment o if character is removed from random string.
    }
 }
//check if amount of removed characters equals total characters of word that we want.
    if ( o == str2.length)
    {
      return true
    }
    if (o !== str2.length)
    {
      return false
    }
}


更新:我将哈希表标记为答案,因为afaik这对于regexp来说是行不通的,看来我也可以使用.split达到正确的结果,并且自己循环执行,加上哈希表也实现了这一点。

妮娜·斯科茨(Nina Scholz)

您可以获取一个哈希表,计算所需的字符,如果不需要计数则返回。

function scramble (str1, str2) {
    var counter = {},
        keys = 0;

    for (let i = 0; i < str2.length; i++) {
        if (!counter[str2[i]]) {
            counter[str2[i]] = 0;
            keys++;
        }
        counter[str2[i]]++;
    }

    for (let i = 0; i < str1.length; i++) {
        if (!counter[str1[i]]) continue;
        if (!--counter[str1[i]] && !--keys) return true;
    }
    return false;
}

console.log(scramble('abc', 'cba'));
console.log(scramble('abc', 'aba'));
console.log(scramble('abcdea', 'aba'));
console.log(scramble('aabbcamaomsccdd', 'commas'));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找字符串缺单词

来自分类Dev

查找字符串前后的单词

来自分类Dev

查找字符串中的特定单词,Python

来自分类Dev

查找字符串中的平均单词长度

来自分类Dev

连续查找字符串中单词的重复项

来自分类Dev

查找字符串中的点分隔单词

来自分类Dev

查找字符串中的单个或多个单词

来自分类Dev

查找字符串中单词的出现

来自分类Dev

查找字符串中的特定单词

来自分类Dev

查找字符串中的单词出现

来自分类Dev

按索引查找字符串中的单词

来自分类Dev

优化查找字符串中第N个出现的字符

来自分类Dev

在PHP中查找字符串

来自分类Dev

在文件中查找字符串

来自分类Dev

查找字符串中的日期

来自分类Dev

查找字符串中的行数

来自分类Dev

在文件中查找字符串

来自分类Dev

查找字符串中的数字

来自分类Dev

查找字符串中的网址

来自分类Dev

查找字符串中的字母

来自分类Dev

Java:在字符串中查找字符串

来自分类Dev

查找字符串在字符串中的位置

来自分类Dev

Python:在字符串中查找字符串

来自分类Dev

在字符串中查找字符串

来自分类Dev

在字符串中查找字符串的实例

来自分类Dev

在字符串中查找字符串的出现

来自分类Dev

javascript在字符串中查找字符串

来自分类Dev

如何查找字符串中单词的字符出现的总数?

来自分类Dev

Java - 查找字符串中给定单词前后的单词