Loading collection data...
Collections are a way for you to organize kata so that you can create your own training routines. Every collection you create is public and automatically sharable with other warriors. After you have added a few kata to a collection you and others can train on the kata contained within the collection.
Get started now by creating a new collection.
Similar pairs would imply some approximate matching rather than exact whole word matching.
Perhaps ignoring case by mapping to lower case:
var seenWords = Arrays.stream(words).map(String::toLowerCase).collect(Collectors.toSet());
But similar pairs is also not quite right -- more like "count duplicates".
Otherwise the similar pairs eg in
{"Volvo", "Volvo", "BMW", "Mazda", "BMW"}
would be 2 -- a pair of Volvos and a pair of BMWs.
And how many pairs are there in { "Volvo", "Volvo", "Volvo", "Mazda" } ?
Actually 3 - there are 3 ways to pick a pair of Volvos from the list 😆!
Every string is added only once. If you look at the diff, you can see why this works: Every string that can not be added is counted, because the set contains it already. The difference of the lengths is the same value as counting strings that can not be added, because the sets contains them already.
where do you check if the strings are similar?
you add them and subtract the lengths