409. 最長回文串

題目描述

409. 最長回文串

思路

題目不難,就是所有的坑我都踩進去了。
"abccccdd" -> a: 1, b:1, d:2, c:4
我的思路是 偶數(shù)個數(shù)的直接相加,然后奇數(shù)里面選最大的就是答案:2+4+1=7.
但是有些樣例過不了,看了別人的解釋:

  1. 如果某字母有偶數(shù)個,因為偶數(shù)有對稱性,可以把它全部用來構造回文串;但如果是奇數(shù)個的話,并不是完全不可以用來構建,也不是只能選最長的那個,而是只要砍掉1個,剩下的變成偶數(shù)就可以全部計入了
  2. 但奇數(shù)字母里,可以保留1個不砍,把它作為回文串的中心,所以最后還要再加回一個1
  3. 但是!如果壓根沒有奇數(shù)的情況,這個1也不能隨便加,所以還要分情況討論。用了flag。

代碼

class Solution {
public:
    int longestPalindrome(string s) {
        unordered_map<char, int> m;
        for (char c : s) {
            m[c]++;
        }
        int res = 0;
        int single = 0;
        int flag = false;
        for (auto it = m.begin(); it != m.end(); it++) {
            if (it->second % 2 == 0) {
                res += it->second;
            } else {
                flag = true;
                res = res + it->second - 1;
            }
        }
        return flag ? res + 1 : res;

    }
};
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 題目 難度:★☆☆☆☆類型:字符串 給定一個包含大寫字母和小寫字母的字符串,找到通過這些字母構造成的最長的回文串。...
    玖月晴閱讀 1,101評論 0 0
  • 題目:最長回文串 給定一個包含大寫字母和小寫字母的字符串,找到通過這些字母構造成的最長的回文串。 在構造過程中,請...
    軟飯王閱讀 243評論 0 0
  • 給定一個包含大寫字母和小寫字母的字符串,找到通過這些字母構造成的最長的回文串。在構造過程中,請注意區(qū)分大小寫。比如...
    不胖二十斤不改名zz閱讀 191評論 0 0
  • 題目 我剛開始的想法 因為題目要求的是輸出長度,并不需要將最長的回文字串數(shù)出來,所以很顯然是一道找規(guī)律的題目,回文...
    雇個城管打天下閱讀 297評論 0 0
  • 2016-10-30 22:52實習記者 張冰冰 PDA,是英文public display of affecti...
    小小只呆毛閱讀 4,648評論 0 0

友情鏈接更多精彩內(nèi)容