LintCode python小白-簡単な問題-627最長回文列

2206 ワード

タイトル:大文字と小文字を含む文字列を指定します.これらのアルファベットからなる最長の回文列の長さを求めます.
データは大文字と小文字が敏感で、つまり「Aa」は回文列とは思われません.
文字列の長さは1010を超えないと仮定します.
例:s=「abcccdd」が7つの構築可能な最長文字列を返すスキームを与えるのは「dccaccd」である.
考え方:
  • 入力文字列
  • 文字列を1つ1つの要素に切断し、対をなすことができる基本的に文列を構築することができる.
  • 文字列を最初にリストに変換し、リストの各要素は文字列の各アルファベットで、順番に並べられ、同じ要素が並べられます.
  • は2つのペアなので、奇数の同じ要素があれば偶数個しか取らず、もう1つは要求を満たすアルファベットではありません.
  • 私たちは中位数を無視することはできません.すなわち、中間は独立したものであってもよく、リストの中の任意のものであってもよく、最大の回文列を求めるために、単独のアルファベットがあれば、それを中間に置いて、回文列の長さ+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 1:
                if slist[i]==slist[i+1]:
                    i+=2
                    j+=2
                else:
                    i+=1
            if j#          
               return j+1
            else:
                return j