题目详情:最长回文串
1. 思路
这个题目难点在于找到“最长回文串”的规律。自己可以手写几个回文串,然后统计下每个字母的数量。
“最长回文串”的规律就是:取每个字母的数量的最大偶数(比如,3就取2,7就取6)相加,如果字母中的数量有奇数,则在结果最后再加 1。
2. 代码(JavaScript 版)
/**
* @param {string} s
* @return {number}
*/
var longestPalindrome = function (s) {
if (!s) return 0
const count = Object.create(null)
for (let i = 0; i < s.length; i++) {
const char = s[i]
if (count[char]) {
count[char] += 1
} else {
count[char] = 1
}
}
let max = 0
let hasSingle = false
for (let char in count) {
const num = count[char]
if (num % 2 === 0) {
max += num
} else {
hasSingle = true
max += num - 1
}
}
return hasSingle ? max + 1 : max
};
3. 提交记录(仅供参考)
- 执行时间:72ms
- 内存消耗:35.1MB