【发布时间】:2018-03-19 15:51:40
【问题描述】:
有两个乱序字符串数组,其中包含多个可能重复的非常长的字符串。如何判断两个数组是否完全相等?
例子:
[“abc”, "abc", "bcd", "efg"] == ["bcd", "efg", “abc”, "abc"]
我能想到的最简单的方法是排序后比较两个数组。
但是当数组中的每个字符串都很长时,每次进行字符串比较是很耗时的。有什么办法可以改善吗?
let array1 = ["aaa...(100 a)...aa", "bbb...(100 b)... bbb", "ccc...(100c) ...c", ....]
let array2 = ["bbb...(100 b)... bbb", "aaa...(100 a)...aa", "ccc...(100c) ...c", ....]
可以使用任何语言求解,但不能使用库中的函数直接比较数组是否相等。
【问题讨论】:
-
您尝试使用哪种语言?
-
在数组迭代期间创建一个
Counter()对象并比较它们。通常,这是每个单词及其相关出现计数的哈希值。将在 O(n) 时间和空间内工作。 -
C/C++或Java,最好不要使用语言内置的数组比较函数。
-
对不起,我在 Javascript 中发布了我的答案,我看到你的消息晚了,但 Java 中的逻辑也将保持不变
-
请给问题相关的语言标签。如果需要扔掉
algorithm+sorting,反正这些都没用。
标签: arrays string algorithm sorting