Leetcode 409. 最长回文串
题目
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。
注意:
假设字符串的长度不会超过 1010。
示例:
输入:
"abccccdd"
输出:
7
解释:
我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
题解
哈希表记录每个字符出现的次数,对于偶数次我们就可以用来构造回文串,如果构造的回文串长度不为字符串的长度,我们还可以找一个字符放到中间。详细过程见代码
代码
int longestPalindrome(string s) {
unordered_map<char,int> list;
int len = s.length();
int ans = 0;
for(int i=0; i<len; i++){
list[s[i]]++;
if(list[s[i]]%2 == 0) ans++;
}
ans *= 2;
if(ans != len) ans++;
return ans;
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindrome
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。