给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 。在构造过程中,请注意 区分大小写 。比如 “Aa” 不能当做一个回文字符串。
🌰:
输入:s = "abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
输入:s = "a"
输入:1
输入:s = "bb"
输入: 2
解题过程⌨
- 使用贪心算法,计算每个字符的出现次数。
/**
* @param {string} s
* @return {number}
*/
var longestPalindrome = function (s) {
let code = {}
for (let c of s) {
if (!code[c]) code[c] = 0;
code[c]++;
}
let result = 0
for (let key in code) {
result += Math.floor(code[key] / 2) * 2
if (code[key] % 2 === 1 && result % 2 === 0) {
result++
}
}
return result
};