最近开始刷lintcode,记录下自己的答案,数字即为lintcode题目号,语言为python3,坚持日拱一卒吧。。。

(一). 回文字符窜问题(Palindrome problem)

627. Longest Palindrome

给出一个包含大小写字母的字符串。求出由这些字母构成的最长的回文串的长度是多少。

数据是大小写敏感的,也就是说,"Aa" 并不会被认为是一个回文串

输入 : s = "abccccdd"
输出 : 7
说明 : 一种可以构建出来的最长回文串方案是 "dccaccd"。
#coding:utf-8

class Solution:
    """
    @param s: a string which consists of lowercase or uppercase letters
    @return: the length of the longest palindromes that can be built
    """
    def longestPalindrome(self, s):
        # write your code here
        char_set=set()
        for c in s:
            if c in char_set:
                char_set.remove(c) #出现偶数次的字母去除掉,留下出现奇数次
            else:
                char_set.add(c)
        single_count = len(char_set) 
        if single_count>0:
            single_count = single_count-1   #留一个单字母在回文正中间
        return len(s)-single_count
if __name__=="__main__":
    s = Solution()
    print(s.longestPalindrome("abccccdd"))
627

相关文章: