给定一个字符串,确定字符串的排列是否可以在Java中形成回文



我发现了一个使用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。"a+1"只计算字符的出现次数(如果第一次放入映射中,则为1;如果字符已在映射中,那么为+1(。

要使一个单词是回文的,每个字符应该是偶数次,并且一个字符最多可以出现一次。

最新更新