iT邦幫忙

0

leetcode with python:409. Longest Palindrome

  • 分享至 

  • xImage
  •  

題目:

Given a string s which consists of lowercase or uppercase letters, return the length of the longest palindrome that can be built with those letters.

Letters are case sensitive, for example, "Aa" is not considered a palindrome here.

給定一字串,判斷用這個字串的字元為材料,所能組成的最長對稱字串的長度
ex:input:"abccccdd"=>output:7
explanation: One longest palindrome that can be built is "dccaccd", whose length is 7.

我們建立一個dictionary來記錄各字元出現的次數

class Solution:
    def longestPalindrome(self, s: str) -> int:
        d={}
        for i in s:
            if i in d:
                d[i]=d[i]+1
            else:
                d[i]=1
                
        ans=0
        
        for i in d:
            ans=ans+(d[i]//2)*2
            
            if ans%2==0 and d[i]%2==1:
                ans=ans+1
                
        return ans

判斷各個字元一共能湊成幾對,每湊成一對表示所能組成的最長回文長度+2
若當前紀錄的最長回文長度為偶數,又遇到一字元出現奇數次
則最長回文長度+1(偶數型回文轉為奇數型回文,取該字元作為中心)
之後回傳我們判斷出該字串能組成的最長回文長度
最後執行時間34ms(faster than 92.65%)

那我們下題見


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言