トピック:
最長の回文文字列
文字回文配列で最長のを見つけるために、構成された大文字と小文字の文字列下記のものを含む、与えられました。
建設プロセスでは、大文字と小文字を区別しますのでご注意ください。以下のような「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