最長迴文串 leetcode 409
題目大意:給定一個字串,找到其字元組成的迴文串的最大長度
解題思路:設定一個hashMap用來儲存每個字元和其出現的次數,當是偶數次的時候就將其統計進長度res中,當其為奇數哥時,將它向下取整數也就是剪一後加入該res長度,同時當發現有奇數的時候標記一個1(迴文中間可以有一個單獨字元),最終將res和標記位累加就是最長迴文串的長度
class Solution {
public int longestPalindrome(String s) {
Map<Character, Integer> counts = new HashMap<>();
for (int i = 0 ; i < s.length() ; i++){
counts.merge(s.charAt(i), 1, (a,b) -> (a + b));
}
int res = 0, odd = 0;
for (Map.Entry<Character, Integer> it : counts.entrySet()){
int count = it.getValue();
int rem = count % 2;
res += count - rem;
if (rem == 1) odd = 1;
}
return res + odd;
}
}