【Leetcode】 最长回文串(每日一题)
题目链接:最长回文串
题意:给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
在构造过程中,请注意区分大小写。比如 "Aa"
不能当做一个回文字符串。
注意:
假设字符串的长度不会超过 1010。
题解:啊这里看题啊,我还不知道为啥标的简单。。这里是让你构造回文串。
所以我们直接用map统计一下字符个数。偶数个直接相加,奇数个-1再相加。
如果出现有奇数个的字符,标记一下,最后+1。因为回文串只能出现一次奇数个字符嘛。
代码:
1 class Solution { 2 public: 3 int longestPalindrome(string s) { 4 map<char,int>mp; 5 int len = s.size(); 6 7 for(int i = 0; i < len ;i++){ 8 mp[s[i]]++; 9 } 10 11 int cnt = 0; 12 int flag = 0; 13 14 map<char,int>::iterator iter; 15 for(iter = mp.begin(); iter != mp.end();iter++){ 16 if(iter->second % 2){ 17 cnt += iter->second-1; 18 flag = 1; 19 } 20 21 else 22 cnt += iter->second; 23 } 24 25 cnt += flag; 26 27 return cnt; 28 } 29 };