gpt4 book ai didi

Java:检查数组的相等性(顺序无关紧要)

转载 作者:IT老高 更新时间:2023-10-28 20:44:06 25 4
gpt4 key购买 nike

我有两个 String 数组,比如说:

String[] s1 = {"a","b","c"}
String[] s2 = {"c","a","b"}

//这些数组应该相等

我想以“最干净”的方式检查它们的相等性。

我尝试使用 Arrays.equals(s1,s2) 但我得到了错误的答案。我猜这个方法关心元素的顺序,我不希望这很重要。

您能告诉我如何以一种好的方式做到这一点吗?

最佳答案

  • Arrays.sort(s1);
  • Arrays.sort(s2);
  • Arrays.equals(s1,s2);

如果您不想修改原始数组

 Arrays.equals( Arrays.sort( Arrays.copyof(s1,s1.length)),
Arrays.sort( Arrays.copyof(s2,s2.length)) );

Arrays.sort() 使用优化的快速排序,平均为 nlog(n),但在最坏的情况下为 O(n2)。来自 java 文档。所以最坏的情况是 O(n2),但实际上大多数情况下是 O(nlogn)。

The sorting algorithm is a tuned quicksort, adapted from Jon L. Bentley and M. Douglas McIlroy's "Engineering a Sort Function", Software-Practice and Experience, Vol. 23(11) P. 1249-1265 (November 1993). This algorithm offers n*log(n) performance on many data sets that cause other quicksorts to degrade to quadratic performance.

关于Java:检查数组的相等性(顺序无关紧要),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10154305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com