最近开始刷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"))