最長回文串 第78天 第78題(最長回文串 )

2021-10-12 21:42:42 字數 1100 閱讀 3047

今天又是陰天,不過陰天涼快,我喜歡。

第78天——第78題(最長回文串)

看題目!

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

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

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

示例 1:

輸入:

"abccccdd"

輸出:7

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

python解答:

class solution:

def longestpalindrome(self, s: str) -> int:

count=collections.counter(s)

center=0

res=0

for i in count:

if count[i] % 2:

center=1

res+=count[i]-1

else:

res+=count[i]

return res+center

答案解析:1.collections.counter()

2.組回文字串的過程,其實我們可以看作是從乙個中心往旁邊對稱放字元的過程。

首先我們先把給的字串統計詞頻

(1)對於所有的出現偶數次的字元,那麼其實在組回文字串的時候就是可以看作直接放置在中心兩側,因此有多少就直接加上去多少就好了。

(2)對於所有的出現奇數次的字元,那麼實際上我們就可以看作是1 + 偶數次,偶數次統統可以加上去,剩下的都是單個的不同的字元,選乙個作為中心就好了。

要注意的是,如果給的字串的字元頻次全是偶數次,那麼肯定中心就不會是乙個單一的字元,所以要加乙個判斷,如果出現了有字元是奇數次那麼就+1,否則對於全是偶數次的字元,就不需要加1了

LeetCode第409題最長回文串

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

LeetCode第78題 子集

給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 nums 1,2,3 輸出 3 1 2 1,2,3 1,3 2,3 1,2 幫助理解 newsets 1 2 2 1,2 3 3 1,3 3 1,3 2,3 3 1,3 2,3 1,2...

LeetCode第78題子集

題目描述 給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。解題思路 對於backtrack函式 1 新增結果 2 for語句,在選擇列表中選擇 做選擇 templist.add nums i 回溯,進入下一層 backtrack list,te...