Эффективный способ найти частоту символа в строке в java: O (n)

В недавнем интервью меня попросили написать следующую программу. Найти символ, частота которого минимальна в данной строке? Итак, я попытался перебрать строку с помощью charAt и сохранить символ как ключ в HashMap, а количество вхождений - как его значение. Теперь мне снова нужно выполнить итерацию по карте, чтобы найти самый нижний элемент.

Есть ли более эффективный способ сделать это, поскольку, очевидно, вышеуказанный вариант слишком интенсивен, я думаю.

Обновление и другое решение

После некоторого мыслительный процесс и ответы Я думаю, что лучшее время, когда это может быть, - O (n). В первой итерации нам нужно будет перебирать символ String за символом, а затем сохранять их частоту в массиве в определенной позиции (символ - это int), и в то же время иметь две временные переменные, которые поддерживают наименьшее количество и соответствующий символ. Поэтому, когда я перехожу к следующему символу и сохраняю его частоту в arr [char] = arr [char] +1; В то же время я проверю, имеет ли переменная temp значение больше этого значения, если да, то переменная temp будет это значение, а также char будет этим. Таким образом, я полагаю, нам не нужна вторая итерация, чтобы найти наименьшее, и также не требуется сортировка, я полагаю

.... Что скажете? Или другие решения

12
задан Algorithmist 3 June 2011 в 07:40
поделиться