今天又是陰天,不過陰天涼快,我喜歡。
第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...