Python编程题25--最长回文串的长度

2021-11-04  本文已影响0人  wintests

题目

给定一个仅包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。

注意:在构造过程中,字符串的字母可以按随意顺序组合成一个回文串,但需区分大小写,比如 "Aa" 不能当做一个回文字符串。

例如:

给定一个字符串:"abccccdd",返回结果:7

说明:上面字符构造的最长的回文串是"dccaccd",其长度为 7

实现思路1

代码实现

def longestPalindrome(s):
    res, tmp_dict = 0, {}
    for i in s:
        tmp_dict[i] = tmp_dict.get(i) + 1 if tmp_dict.get(i) else 1
    for i in tmp_dict:
        i_count = tmp_dict.get(i)
        res += i_count if i_count % 2 == 0 else i_count - 1
    return res if res == len(s) else res + 1

实现思路2

代码实现

def longestPalindrome(s):
    tmp_set = set(s)
    even_list = [s.count(i) for i in tmp_set if s.count(i) % 2 == 0]
    odd_list = [s.count(i) - 1 for i in tmp_set if s.count(i) % 2 != 0]
    if odd_list:
        return sum(even_list) + 1 + sum(odd_list)
    return sum(even_list) + sum(odd_list)

更多Python编程题,等你来挑战:Python编程题汇总(持续更新中……)

上一篇下一篇

猜你喜欢

热点阅读