1. 程式人生 > >leetcode 409. 最長迴文串

leetcode 409. 最長迴文串

給定一個包含大寫字母和小寫字母的字串,找到通過這些字母構造成的最長的迴文串。

在構造過程中,請注意區分大小寫。比如 "Aa" 不能當做一個迴文字串。

注意: 假設字串的長度不會超過 1010。

示例 1:

輸入:
"abccccdd"

輸出:
7

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

思路

  1. 一開始想把所有偶數加起來,把最大的奇數加上,然而沒過
  2. 後來才發現可以把奇數拆出偶數來

code

class Solution {
public:
    int longestPalindrome(string s) {
        if(s.size()==0)
            return 0;
        int a[100]={0};
        for(auto i:s)
            ++a[i-'A'];
        int sum1=0;
        int sum2=0;
        for(auto i:a){
            if(i%2==0)
                sum1+=i;
            else{
                sum2 += sum2==0;
                sum2+=i-1;
            }
        }
        return sum1+sum2;
    }
};