给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。
输入:
"abccccdd"
输出:
7
解释:
我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
提示:分析回文串的特征
let longestPalindrome = s => {
let cnts = Array(256).fill(0);
s = s.split("");
s.forEach(c => cnts[c.charCodeAt(0)]++);
let palindrome = 0;
cnts.forEach(cnt => palindrome += Math.floor(cnt / 2) * 2);
if (palindrome < s.length)
palindrome++;
return palindrome;
};
console.log(longestPalindrome("abccccdd"))
func longestPalindrome(s string) int {
cnts := make([]int, 256)
for _, c := range s {
cnts[c]++
}
palindrome := 0
for _, cnt := range cnts {
palindrome += (cnt / 2) * 2
}
if palindrome < len(s) {
palindrome++
}
return palindrome
}
class Solution {
public int longestPalindrome(String s) {
int[] cnts = new int[256];
for (char c : s.toCharArray()) {
cnts[c]++;
}
int palindrome = 0;
for (int cnt : cnts) {
palindrome += (cnt / 2) * 2;
}
if (palindrome < s.length()) {
palindrome++;
}
return palindrome;
}
}