LeetCode简单题之最长回文串
題目
給定一個(gè)包含大寫(xiě)字母和小寫(xiě)字母的字符串 s ,返回 通過(guò)這些字母構(gòu)造成的 最長(zhǎng)的回文串 。
在構(gòu)造過(guò)程中,請(qǐng)注意 區(qū)分大小寫(xiě) 。比如 “Aa” 不能當(dāng)做一個(gè)回文字符串。
示例 1:
輸入:s = “abccccdd”
輸出:7
解釋:
我們可以構(gòu)造的最長(zhǎng)的回文串是"dccaccd", 它的長(zhǎng)度是 7。
示例 2:
輸入:s = “a”
輸入:1
示例 3:
輸入:s = “bb”
輸入: 2
提示:
1 <= s.length <= 2000
s 只能由小寫(xiě)和/或大寫(xiě)英文字母組成
來(lái)源:力扣(LeetCode)
解題思路
??想要構(gòu)造最長(zhǎng)的回文串,首先需要統(tǒng)計(jì)各個(gè)字符的頻率,然后取每個(gè)字符的最大偶數(shù)個(gè)字符進(jìn)行構(gòu)造,如果最終構(gòu)造的回文字符串與它給定的字符串長(zhǎng)度一致那么就說(shuō)明所有的字符都被用于構(gòu)造回文串了,如果不等于,那么最終構(gòu)造的回文串長(zhǎng)度一定小于給定字符串的長(zhǎng)度,所以還需要隨便從給定的字符串中取出一個(gè)字符作為回文串最中間的元素。
class Solution:def longestPalindrome(self, s: str) -> int:S,d=0,Counter(s)for i in d.values():if i!=1:S+=i//2*2return S if S==len(s) else S+1
總結(jié)
以上是生活随笔為你收集整理的LeetCode简单题之最长回文串的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LeetCode简单题之将每个元素替换为
- 下一篇: LeetCode简单题之字符的最短距离