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 的情况,造成错误。

相关文章
|
10月前
|
Oracle Cloud Native 关系型数据库
Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版
Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版
189 10
Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版
|
10月前
|
人工智能 安全 搜索推荐
销售易:国产CRM替代方案中的企业优选
近年来,国产CRM软件逐渐替代国际品牌,成为企业信息化建设的新选择。这一趋势受到中美关系摩擦、国家政策导向、数据安全需求等因素推动,同时也得益于国产CRM厂商在产品和服务上的持续优化与突破。以销售易为代表的国产CRM,不仅在技术性能上与国际品牌相当,还在移动化、定制化、安全性等方面展现出独特优势,赢得了包括海康威视在内的多家大型企业的信赖。销售易通过完善的产品体系和高效的迁移解决方案,帮助企业实现平稳过渡,加速数字化转型。
|
SQL 关系型数据库 BI
草率了!没想pgadmin这么强大
草率了!没想pgadmin这么强大
884 0
|
12月前
|
自动驾驶 物联网 5G
深入解析5G NR(新无线电)及其主要特性
深入解析5G NR(新无线电)及其主要特性
1702 2
|
网络协议 Ubuntu Linux
在Linux中, 如何配置网络接口?
在Linux中, 如何配置网络接口?
|
安全 关系型数据库 MySQL
如何在 MySQL 中导入和导出数据库以及重置 root 密码
如何在 MySQL 中导入和导出数据库以及重置 root 密码
157 0
|
11月前
|
数据采集 算法 大数据
大数据中数据清洗 (Data Cleaning)
【10月更文挑战第17天】
996 1
|
机器学习/深度学习 传感器 编解码
史上最全 | BEV感知算法综述(基于图像/Lidar/多模态数据的3D检测与分割任务)
以视觉为中心的俯视图(BEV)感知最近受到了广泛的关注,因其可以自然地呈现自然场景且对融合更友好。随着深度学习的快速发展,许多新颖的方法尝试解决以视觉为中心的BEV感知,但是目前还缺乏对该领域的综述类文章。本文对以视觉为中心的BEV感知及其扩展的方法进行了全面的综述调研,并提供了深入的分析和结果比较,进一步思考未来可能的研究方向。如下图所示,目前的工作可以根据视角变换分为两大类,即基于几何变换和基于网络变换。前者利用相机的物理原理,以可解释性的方式转换视图。后者则使用神经网络将透视图(PV)投影到BEV上。
史上最全 | BEV感知算法综述(基于图像/Lidar/多模态数据的3D检测与分割任务)
|
算法 API 计算机视觉
【OpenCV】- 模板匹配(浩瀚星空只为寻找那一抹明月)
【OpenCV】- 模板匹配(浩瀚星空只为寻找那一抹明月)
148 4
|
存储 缓存 关系型数据库
PolarDB存储原理与实践
在阿里云开源的趋势下,PolarDB已经成功运用到很多企业案例中。
PolarDB存储原理与实践