Учитывая строку, определите, может ли перестановка строки сформировать палиндром в Java

#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, если символ уже есть на карте).

Чтобы слово было палиндромом, каждый символ должен быть четным числом раз, и максимум символ может быть там один раз.