#java #string #hashmap #permutation #palindrome
#java #строка #hashmap #перестановка #палиндром
Вопрос:
Я нашел решение с использованием HashMap, и я более или менее понимаю, что такое HashMap, а также то, что делает map.getOrDefault(), но в этом конкретном сценарии я в замешательстве. Почему существует 1 и к чему именно мы добавляем?
public boolean canPermutePalindrome(String s) {
HashMap <Character, Integer> map = new HashMap<> ();
for (int i = 0; i < s.length(); i ) {
map.put(s.charAt(i), map.getOrDefault(s.charAt(i), 0) 1); <-- I need a breakdown of this
}
int count = 0;
for (char key: map.keySet()) {
count = map.get(key) % 2;
}
return count <= 1;
}
Ответ №1:
В основном все это вычисляет, сколько раз каждый символ слова находится в самом слове.
Эта строка кода помещает запись в карту, инициализируя ее с помощью 1 или увеличивая ее на 1, если она уже есть. ‘a 1’ просто подсчитывает вхождения символа (1, если он помещается на карту в первый раз, a 1, если символ уже есть на карте).
Чтобы слово было палиндромом, каждый символ должен быть четным числом раз, и максимум символ может быть там один раз.