I am trying to find the number of Strings that only appear exactly once in an ArrayList
.
How many I achieve this (preferably with the best possible time complexity)?
Below is my method:
public static int countNonRepeats(WordStream words) {
ArrayList<String> list = new ArrayList<String>();
for (String i : words) {
list.add(i);
}
Collections.sort(list);
for (int i = 1; i < list.size(); i++) {
if (list.get(i).equals(list.get(i - 1))) {
list.remove(list.get(i));
list.remove(list.get(i - 1));
}
}
System.out.println(list);
return list.size();
}
Why doesn't it remove the String at list.get(i)
and list.get(i-1)
?
Here's one simple suggestion:
if( !list.get(i).equals(list.get(i+1)) ) → unique
i
until you reach a different stringThis will have the complexity of the sorting algorithm, since step 2+3 should be O(n)