如何比较两个洗牌的字符串?

har*_*rry 32 javascript

我有以下两个字符串:

var str1 = "hello";
var str2 = "ehlol";
Run Code Online (Sandbox Code Playgroud)

如何检查两个字符串是否包含相同的字符?

gur*_*372 38

可能不是最优,但你可以做到

str1.split("").sort().join() == str2.split("").sort().join(); //outputs true
Run Code Online (Sandbox Code Playgroud)

另一个建议的方法在一个注释中(对于字符串长度非常大的优化)

str1.length===str2.length && str1.split("").sort().join() == str2.split("").sort().join(); //first check the length to quickly rule out in case of obvious non-matches
Run Code Online (Sandbox Code Playgroud)

  • 您可以通过首先检查长度来优化它:`str1.length === str2.length && str1.split("").sort().join()== str2.split("").sort().join ()`; 更长,但在简单的情况下将为您节省一些资源 (4认同)
  • @guradio他们将被单独计算 (3认同)
  • @ymbirtt具有相同内容和长度的数组仍然不相等,因为它们是引用类型.`一个= []; B = []; a == b // false`,但是`a = []; b = a; a == b // true`.但是字符串不是引用类型,因此比较它们是有效的.您必须使用`for`循环手动迭代数组以检查它们的相等性. (3认同)