描述
给出一个包含大小写字母的字符串。求出由这些字母构成的最长的回文串的长度是多少。
数据是大小写敏感的,也就是说,"Aa"
并不会被认为是一个回文串。
假设字符串的长度不会超过 1010
。
您在真实的面试中是否遇到过这个题?
是
样例
给出 s = "abccccdd"
返回 7
一种可以构建出来的最长回文串方案是 "dccaccd"
。
使用关联容器是一个好的选择,注意,最中间的数可以不配对。
class Solution {
public:
/**
* @param s: a string which consists of lowercase or uppercase letters
* @return: the length of the longest palindromes that can be built
*/
int longestPalindrome(string &s) {
// write your code here
unordered_map <char,int> m_map;
int sum=0;
for(int i=0;i<s.length();i++){
m_map[s[i]]++;
if(m_map[s[i]]==2){
sum+=2;
m_map[s[i]]-=2;
}
}
if(sum<s.length()) return sum+1;
else return sum;
}
};