原题链接:https://leetcode.com/problems/longest-palindrome/
原题:
Given a string which consists of lowercase or uppercase letters, find the length of the longest palindromes that can be built with those letters.
This is case sensitive, for example “Aa” is not considered a palindrome here.
Note:
Assume the length of given string will not exceed 1,010.
样例:
Input:
"abccccdd"
Output:
7
Explanation:
One longest palindrome that can be built is "dccaccd", whose length is 7.
题意:
就是给你一个字符串,问你里面最长的回文数的长度是多少?
回文数:中心对称的一个字符串。
解题思路:
回文数可以是偶数个,然后每个数字出现两次,也可以是奇数个,某个数字单独出现一次。
所以,这里我们可以用到一个容器set,set里面不允许出现两个一样的值,可以通过find函数来查找set里面是否有某个值,没有,则返回这个set的末尾位置。insert函数用于插入数据,erase是擦除函数。
具体可以看这里:set的具体用法
AC代码:
class Solution {
public:
int longestPalindrome(string s) {
set<int> set_t;
int length=0;
for(char a:s){
if(set_t.find(a)!=set_t.end()){
length+=2;
set_t.erase(a);
}
else{
set_t.insert(a);
}
}
return set_t.size()>0?length+1:length;
}
};