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