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

Mad*_*ist 3 javascript regex string algorithm

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

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

最重要的是,无论两个字符串中的字符顺序如何,该方法都需要正常工作。此外,字符数也很重要。“Hel”不包含构成“hell”的所有字符。这严格指的是字符数:需要两个 l 才能组成单词“hell”,而“hel”只有一个。

进一步澄清问题,我并不担心在从字符串的字符组成子字符串后是否留下一些“未使用”的字符。也就是说,“hell”仍然应该包含单词“hell”的所有字母。

我怎样才能有效地完成这个任务?也许有正则表达式解决方案?速度在某种程度上是一个问题,但并不是绝对关键。

Was*_*des 5

您可以使用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;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

Every将在第一个假值中失败,然后它不会搜索每个字母。