LeetCode 409 最長回文串

2021-08-17 20:22:02 字數 929 閱讀 9399

題目傳送

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

在構造過程中,請注意區分大小寫。比如 「aa」 不能當做乙個回文字串。

注意:

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

示例 1:

輸入:

「abccccdd」

輸出:

7解釋:

我們可以構造的最長的回文串是」dccaccd」, 它的長度是 7。

這道題比較簡單,因為只需要輸出最長回文串的長度就行

回文串就是從中心對稱的,所以任何出現過偶數次的字元都可以算進長度之中,但要注意,回文串中也可以新增乙個奇數個的字元,且只能放在中間

我最初的想法是,構建乙個 map ,key:字元,value:出現的次數

然後把所有偶數次的 value 相加,再把奇數次中的最大數相加,可是卻入了坑,沒能ac

後來發現,可以從奇數次中的字元裡取出偶數個也可以加入回文串

class solution  else 

}int result = 0;

for (map.entryentry : map.entryset()) else

}if (result < s.length()) result++;

return result;

}}

排名第一的範例**寫的非常聰明,直接利用乙個 boolean 來統計字元出現的奇偶次數

class solution 

if (len

< s.length()) len++; // if more than len, atleast one single is present

return

len;

}}

LeetCode 409 最長回文串

給定乙個包含大寫字母和小寫字母的字串,找到通過這些字母構造成的最長的回文串。在構造過程中,請注意區分大小寫。比如 aa 不能當做乙個回文字串。注意 假設字串的長度不會超過 1010。示例 1 輸入 abccccdd 輸出 7 解釋 我們可以構造的最長的回文串是 dccaccd 它的長度是 7。先排個...

LeetCode 409 最長回文串

給定乙個包含大寫字母和小寫字母的字串,找到通過這些字母構造成的最長的回文串。在構造過程中,請注意區分大小寫。比如 aa 不能當做乙個回文字串。注意 假設字串的長度不會超過 1010。建立map存放26個大小寫字母的數量 如果該字母數量為偶數,則sum value 如果該字母數量為奇數,則把value...

Leetcode 409 最長回文串

給定乙個包含大寫字母和小寫字母的字串,找到通過這些字母構造成的最長的回文串。在構造過程中,請注意區分大小寫。比如 aa 不能當做乙個回文字串。注意 假設字串的長度不會超過 1010。示例 1 輸入 abccccdd 輸出 7 解釋 我們可以構造的最長的回文串是 dccaccd 它的長度是 7。貪心構...