我正在尝试查找字符串中唯一字符的数量。解决方案必须尽可能高效(时间复杂度 O(N);非常大的数组;一般来说是大 O)。我决定这样做(如果您有更好的解决方案请告诉我)。唯一的问题是,当我尝试运行它时,它总是说只有一个不同的值。 Collections.addAll 方法似乎有问题(也许我使用错误)。请让我知道如何解决它。看起来它只取数组中的第一个字符。谢谢。
String ds = "acvdgefav";
char[] sa = ds.toCharArray();
for (int i=0; i<sa.length; i++)
System.out.println(sa[i]);
System.out.println();
System.out.println(sa.length);
System.out.println();
HashSet hs = new HashSet();
Collections.addAll(hs, sa);
for (int i=0; i<hs.size(); i++)
System.out.println(sa[i]);
System.out.println();
int z = hs.size();
System.out.println(z);
最佳答案
我建议您使用泛型,因为它会发现代码中的错误,就像使用调试器单步调试代码一样。
最有效的方法是使用 BitSet。这可能比使用 HashSet 快 10 倍,但时间复杂度相同。
关于java - 集合 addAll 方法用于一组唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9956778/