leetcode毎日出席409最長の回文文字列

トピック:

最長の回文文字列

文字回文配列で最長のを見つけるために、構成された大文字と小文字の文字列下記のものを含む、与えられました。

建設プロセスでは、大文字と小文字を区別しますのでご注意ください。以下のような「Aaが」回文文字列として使用することはできません。

注:
文字列の長さを超える1010ではないと仮定。

例1:

入力:
"abccccdd"

出力:
7

説明:
私たちは最も長い文字列を作成することができますが回文「dccaccd」、その長さは7です。
出典:leetcodeの
リンク:https://leetcode-cn.com/problems/longest-palindrome/
コード:

class Solution:
    def longestPalindrome(self, s: str) -> int:
        a=collections.Counter(s)
        num=0
        count=0
        if  len(a)==1:
            return  len(s)
        for i in a:
            if a[i]%2==0:
                num+=a[i]
            elif a[i]>1:
                num+=a[i]-1
                count=1
            else:
                count=1
        return num+count if len(s)!=0 else 0

グレート神コード:

class Solution:
    def longestPalindrome(self, s):
        ans = 0
        count = collections.Counter(s)
        for v in count.values():
            ans += v // 2 * 2
            if ans % 2 == 0 and v % 2 == 1:
                ans += 1
        return ans

おすすめ

転載: www.cnblogs.com/rmxob/p/12522601.html