LeetCode 最長回文串

2022-06-01 08:33:09 字數 917 閱讀 2737

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

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

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

示例:

輸入:

"abccccdd"

輸出:7

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

解題思路:

思路:我們首先必須要跳出慣性思維,觀察乙個能構成回文串的字串,如「abccccdd」。可以發現:既然能構成回文串,那麼其回文中心(即:示例中的"a")必須是奇數,回文中心兩側的字元都將是偶數個。也就是說,當系統給我們乙個字串 s ,首先要得到這個字串中每個字元出現的次數,如果這個字元出現的次數為偶數個,則長度 + 這個偶數(初始長度為0)。如果這個字元出現次數為奇數個,則長度+ 此個數 - 1(為什麼減1:因為回文中心只有乙個,且必須是奇數,當遍歷結束後在加1即可)。

**:

def solution(s: str) -> int:

ans = 0 # 回文串的總長度

flag = false # 判斷字串s中是否有字元為奇數的,有為true

count = collections.counter(s) # 這裡可以用 for 迴圈生成乙個dict代替collections模組

for v in count.values():

if v % 2 == 0: 字元個數為偶數時

ans += v

else: # 字元個數為奇數時

ans += v -1

flag = true

if flag:

ans += 1

return ans

print(solution("abccccdd"))

LeetCode 最長回文串

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

leetcode 最長回文子串

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 中心拓展法 由乙個中心點開始向兩邊拓展,檢測邊界,判斷兩個值是否相等,相等則繼續拓展下去,檢測邊界。1....

最長回文子串(LeetCode)

給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb class solution def longestpalindrome self,s type s str r...