Мы выполняем l oop n раз, где n - длина слов. В случае, если хэш-код всех строк одинаков, и все строки отличаются только последними несколькими символами или все строки в массиве слов одинаковы, метод equals должен сравнить почти все символы, чтобы проверить их равенство 2 строк. Если k - длина самой длинной / средней строки, какова будет сложность кода ниже? Я предполагаю O (nlogk), если хэш-карта внутренне реализована с использованием сбалансированного двоичного дерева.
String[] words = {"cccccb", "cccccb", "ccccbc"};
Map<String, Integer> count = new HashMap();
for (String word: words) {
count.put(word, count.getOrDefault(word, 0) + 1);
}