Given a string s
, return true
if a permutation of the string could form a palindrome.
Example 1:
Input: s = "code" Output: false
Example 2:
Input: s = "aab" Output: true
Example 3:
Input: s = "carerac" Output: true
Constraints:
1 <= s.length <= 5000
s
consists of only lowercase English letters.
class Solution:
def canPermutePalindrome(self, s: str) -> bool:
mapper = {}
for ch in s:
mapper[ch] = mapper.get(ch, 0) + 1
cnt = 0
for _, v in mapper.items():
if v % 2 != 0:
cnt += 1
return cnt <= 1
class Solution {
public boolean canPermutePalindrome(String s) {
Map<Character, Integer> map = new HashMap<>();
for (int i = 0, n = s.length(); i < n; ++i) {
char ch = s.charAt(i);
map.put(ch, map.getOrDefault(ch, 0) + 1);
}
int cnt = 0;
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
if (entry.getValue() % 2 != 0) {
++cnt;
}
}
return cnt <= 1;
}
}