小编典典

测试字符串是否包含组成另一个字符串的所有字符

algorithm

我正在尝试使用Javascript查看某个字符串是否包含组成另一个字符串的所有字符。

例如,单词“ hello”包含组成单词“ hell”的所有字符。另外,单词“ hellowy”包含组成单词“ yellow”的所有字符。

最重要的是,该方法需要起作用,而与两个字符串中的字符顺序无关。另外,字符数很重要。“ Hel”不包含组成“
hell”的所有字符。这严格地指的是字符的数量:一个单词需要两个l才能使单词“ hell”和“ hel”只有一个。

进一步澄清这个问题,我不担心在从字符串的字符组成子字符串之后是否剩下一些“未使用的”字符。也就是说,“地狱”仍应包含“地狱”一词的所有字母。

我怎样才能有效地做到这一点?也许有一个正则表达式解决方案?速度多少是个问题,但不是绝对关键。


阅读 200

收藏
2020-07-28

共1个答案

小编典典

您可以使用every

function test(string, substring) {
    var letters = [...string];
    return [...substring].every(x => {
        var index = letters.indexOf(x);
        if (~index) {
            letters.splice(index, 1);
            return true;
        }
    });
}

Every将在第一个伪造的值中失败,然后不搜索 每个 字母。

2020-07-28