leetcode-409. 最長迴文串刷題筆記(c++)

寫在前面

  • 正確理解題意,例如示例2
    • 包含所有可用字母
  • 細節處理耗費較多時間

題目詳情

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

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

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

示例 1:
	輸入: "abccccdd"
	輸出: 7
示例 2:
	輸入: "abccccceeedd"
	輸出: 7

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

ac代碼

  • 字符哈希法
class Solution
{
public:
    int longestPalindrome(string s)
    {
        int a[128] = {0};
        int sum = 0;
        int flag = 0;
        for(int i = 0; i < s.size(); i++)
            ++a[s[i]];

        for(int i = 0; i < 128; i++)
        {
            if(a[i] % 2 == 0)
                sum += a[i];
            if(a[i] %2 == 1)
            {
                flag = 1;
                sum += a[i] - 1;
            }
        }
        return sum + flag;
    }
};
  • 知識點小結
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章