1. 程式人生 > >LintCode python 小白-簡單題-627最長迴文串

LintCode python 小白-簡單題-627最長迴文串

題目:給出一個包含大小寫字母的字串。求出由這些字母構成的最長的迴文串的長度是多少。

資料是大小寫敏感的,也就是說,”Aa” 並不會被認為是一個迴文串。

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

樣例:給出 s = “abccccdd” 返回 7
一種可以構建出來的最長迴文串方案是 “dccaccd”。

思路:

  1. 輸入的是一個字串
  2. 將字串切割成一個一個的元素,然後能夠成對的基本就能構建迴文串。
  3. 將字串先轉換為列表,然後列表的每一個元素是字串的每一個字母,排好序,這樣子相同的元素會排在一起。
  4. 因為是兩個成對,所以若有奇數的相同元素,也只取偶數個,另外一個不能滿足要求的字母。
  5. 我們不能忽略中位數,即中間可以是獨立的一個,並且是列表中隨便的一個,為了求最大回文串,若有使單獨的字母,將其放在中間,使迴文串的長度+1。
    程式碼:
class Solution:
    # @param {string} s a string which consists of lowercase or uppercase letters
    # @return {int} the length of the longest palindromes that can be built
    def longestPalindrome(self, s):
        # Write your code here
        slist=list(s)   #將字串轉變為列表
        slist.sort()    #排序
result=[] #存放滿足迴文串的字母 i=0 #迴圈初始化 j=0 #迴文串的長度初始為0 while i <len(slist)-1: if slist[i]==slist[i+1]: i+=2 j+=2 else: i+=1 if j<len(slist): #判斷是否有獨立的字母 return
j+1 else: return j