409. 最长回文串 Longest Palindrome

简介: 409. 最长回文串 Longest Palindrome

409. 最长回文串 Longest Palindrome


Table of Contents

一、中文版

二、英文版

三、My answer

四、解题报告


一、中文版

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

在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。

注意:

假设字符串的长度不会超过 1010。

示例 1:

输入:

"abccccdd"

输出:

7

解释:

我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。


二、英文版

Given a string which consists of lowercase or uppercase letters, find the length of the longest palindromes that can be built with those letters.
This is case sensitive, for example "Aa" is not considered a palindrome here.
Note:
Assume the length of given string will not exceed 1,010.
Example:
Input:
"abccccdd"
Output:
7
Explanation:
One longest palindrome that can be built is "dccaccd", whose length is 7.


三、My answer

class Solution:
    def longestPalindrome(self, s: str) -> int:
        if not s:
            return 0
        flag, res = 0, 0
        counter = collections.Counter(s)
        for key in counter:
            if counter[key] % 2 == 0:
                res += counter[key]
            else:
                flag = 1
                res += counter[key]-1
        return res if flag == 0 else res + 1


四、解题报告

使用 collections.Counter() 生成类似字典的结构,存储字符串中字母出现的个数。

如果是偶数个直接放入 res 结果中;如果是奇数个,先把 奇数-1 存入结果,再利用 flag 标志位,如果 flag = 1 证明有奇数,再加上这个奇数位于中间位置。

注意不能直接加上最长的奇数位,特殊情况:abbbccc,则结果是 cbbbc,直接加上最长的奇数,会漏掉可以加上 cc 的情况,造成错误。

相关文章
|
网络安全 开发工具 git
git 出现错误:kex_exchange_identification: read: Connection reset by peer fatal
git 出现错误:kex_exchange_identification: read: Connection reset by peer fatal
git 出现错误:kex_exchange_identification: read: Connection reset by peer fatal
|
安全 算法 Android开发
Android10.0 人脸解锁(上)
Android10.0 人脸解锁(上)
1127 1
Android10.0 人脸解锁(上)
|
机器学习/深度学习 人工智能 算法
一文搞懂模型量化算法基础
一文搞懂模型量化算法基础
5925 0
|
机器学习/深度学习 自然语言处理 算法
DSW-Gallery使用体验+生成吸引人眼球的新闻标题
本文利用EasyNLP进行模型构建、训练、评估、预测生成中文新闻标题,介绍如何在PAI-DSW中使用EasyNLP
DSW-Gallery使用体验+生成吸引人眼球的新闻标题
C# .net webapi使用swagger时显示controller注释
C# .net webapi使用swagger时显示controller注释
718 0
C# .net webapi使用swagger时显示controller注释
|
Ubuntu Linux
Ubuntu调整swap大小
Ubuntu调整swap大小
2280 0
Ubuntu调整swap大小
|
Ubuntu Linux 开发工具
Ubuntu通过fim或xdg-open在终端中打开图片
Ubuntu通过fim或xdg-open在终端中打开图片
1376 0
Ubuntu通过fim或xdg-open在终端中打开图片
|
Shell 开发工具 git
Git下载安装及IDEA整合Git
Git下载安装及IDEA整合Git
Git下载安装及IDEA整合Git
|
SQL 关系型数据库 MySQL
MYSQL递归查询,根据子类ID查询所有父类(宇宙第一详细教程)
MYSQL递归查询,根据子类ID查询所有父类(宇宙第一详细教程)
MYSQL递归查询,根据子类ID查询所有父类(宇宙第一详细教程)

热门文章

最新文章