Leetcode 409. 最長迴文串 409. Longest Palindrome

409. 最長迴文串
給定一個包含大寫字母和小寫字母的字符串,找到通過這些字母構造成的最長的迴文串。
在構造過程中,請注意區分大小寫。比如 “Aa” 不能當做一個迴文字符串。
注意:
假設字符串的長度不會超過 1010。

示例 1:
輸入:
“abccccdd”
輸出:
7

解釋:
我們可以構造的最長的迴文串是"dccaccd", 它的長度是 7。

執行用時 : 4 ms, 在Longest Palindrome的C++提交中擊敗了100.00% 的用戶
內存消耗 : 9.1 MB, 在Longest Palindrome的C++提交中擊敗了68.90% 的用戶
class Solution {
public:
    int longestPalindrome(string s) {
        map<char,int> m;
        for(int i=0;i<s.size();i++){
            if(m.count(s[i])) m[s[i]]++;
            else m[s[i]]=1;
        }
        map<char,int>::iterator iter; 
        int count=0; //所有出現奇數次的字母,都只能減一次取偶數個,除了出現次數最多的那個奇數,放中間
        for(iter = m.begin(); iter != m.end(); iter++){
            int temp=iter->second;
            if(temp%2==1) count++;
        }
        if(count>0) count-=1; // 一開始忽略了這個,直接減一提交出錯
                              // 因爲沒有計數爲奇數的字母存在,減一就不必要
        return s.size()-count; 
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章