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 人脸解锁(上)
1109 1
Android10.0 人脸解锁(上)
|
机器学习/深度学习 人工智能 算法
一文搞懂模型量化算法基础
一文搞懂模型量化算法基础
5892 0
|
Web App开发 算法 JavaScript
vue-router 还给路由排了序?解析路由匹配,vue-router Matcher 解析(三)
之前的两篇文章讲了, vue-router 的 Matcher 对初始的 routes 进行了标准化(normalized)处理以及别名(alias)处理,但还有matcher 处理 route 的匹配
|
缓存 Android开发 开发者
Dagger2 框架与 SystemUI
Dagger2 框架与 SystemUI
1523 0
Dagger2 框架与 SystemUI
|
机器学习/深度学习 自然语言处理 算法
DSW-Gallery使用体验+生成吸引人眼球的新闻标题
本文利用EasyNLP进行模型构建、训练、评估、预测生成中文新闻标题,介绍如何在PAI-DSW中使用EasyNLP
DSW-Gallery使用体验+生成吸引人眼球的新闻标题
C# .net webapi使用swagger时显示controller注释
C# .net webapi使用swagger时显示controller注释
701 0
C# .net webapi使用swagger时显示controller注释
|
Linux Shell
centos 8利用crontab设置定时任务,crontab每秒运行
centos 8利用crontab设置定时任务,crontab每秒运行
1308 0
centos 8利用crontab设置定时任务,crontab每秒运行
|
Ubuntu Linux 开发工具
Ubuntu通过fim或xdg-open在终端中打开图片
Ubuntu通过fim或xdg-open在终端中打开图片
1356 0
Ubuntu通过fim或xdg-open在终端中打开图片