今日打卡的也是一道水題
409. 最長回文串
其實很簡單,統(tǒng)計一下每個字符出現(xiàn)次數(shù)。如果是偶數(shù)钝域,那就直接結(jié)果加上個數(shù),如果是奇數(shù)锭魔,那就結(jié)果加上奇數(shù)減1例证。最后如果結(jié)果小于總長度,那就說明有奇數(shù)出現(xiàn)過迷捧,那結(jié)果再加1
public int longestPalindrome(String s) {
/**
*
* 功能描述: 給定一個包含大寫字母和小寫字母的字符串织咧,找到通過這些字母構(gòu)造成的最長的回文串胀葱。
*
* 在構(gòu)造過程中,請注意區(qū)分大小寫笙蒙。比如 "Aa" 不能當(dāng)做一個回文字符串抵屿。
*
* @param: [s]
* @return: int
* @auther: smallfish
* @date: 2020-03-19 22:43
*/
int length = s.length();
int[] chars = new int[150];
for (int i = 0; i < length; i++) {
chars[s.charAt(i) - 'A']++;
}
int result = 0;
for (int aChar : chars) {
if (aChar % 2 == 0) {
result += aChar;
} else {
result += aChar - 1;
}
}
if (result < length) {
result += 1;
}
return result;
}