力扣409(java&python)-最长回文串(简单)
题目:
给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 。
在构造过程中,请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串。
示例 1:
输入:s = "abccccdd"
输出:7
解释:
我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
示例 2:
输入:s = "a"
输入:1
提示:
1 <= s.length <= 2000
s 只由小写 和/或 大写英文字母组成
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-palindrome
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
构造一个长度为128(ASCII码值的数值范围为0~127)的字符数组,首先统计出每个字符出现的次数,然后遍历次数,如果次数为偶数,则可以直接作为回文的一部分,长度直接加上字符出现的次数,如果是奇数,则减去1个变为偶数,加上变为偶数后的次数。当最后得到的回文的长度跟s一样长,则说明每个字符都出现偶数次,如果长度不等于s,则说明至少有一个字符单独出现,再拿出一个字符放在中心位置,则长度再 +1。
java代码:
1 class Solution {
2 public int longestPalindrome(String s) {
3 int[] letter = new int[128];
4 char[] cs = s.toCharArray();
5 for(char c : cs){
6 letter[c]++;
7 }
8 int ans = 0;
9 for(int num : letter){
10 //num % 2要么为0要么为1
11 //为1,说明次数为奇数,减去一个
12 ans += num - (num % 2);
13 }
14 return ans == s.length() ? ans : ans + 1;
15 }
16 }

python3代码:
1 class Solution:
2 def longestPalindrome(self, s: str) -> int:
3 map = collections.Counter(s)
4 ans = 0
5 # 设置标志位判断奇数或者偶数
6 flag = False
7 for k, v in map.items():
8 if v % 2 == 0:
9 ans += v
10 else:
11 # 为奇数次就变味偶数
12 ans += v - 1
13 flag = True
14 if flag:
15 # 为奇数,再加一个中心位
16 ans += 1
17 return ans

力扣409(java&python)-最长回文串(简单)的更多相关文章
- Java实现最长回文串
1 问题描述 给定一个字符串,求它的最长回文子串的长度. 2 解决方案 2.1 中心扩展法 此处,首先枚举出回文串的中心位置,然后,再在该位置上分别向左和向右扩展,记录并更新得到的最长回文串的长度. ...
- 力扣(LeetCode)125. 验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: "A man, a plan, a c ...
- 409 Longest Palindrome 最长回文串
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串.在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串.注意:假设字符串的长度不会超过 ...
- Java实现 LeetCode 409 最长回文串
409. 最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意 ...
- 算法笔记_032:最长回文串(Java)
目录 1 问题描述 2 解决方案 2.1 中心扩展法 2.2 Manacher算法 1 问题描述 给定一个字符串,求它的最长回文子串的长度. 2 解决方案 2.1 中心扩展法 此处,首先枚举出回文 ...
- leetcode 每日签到 409. 最长回文串
题目: 最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: ...
- (最长回文串 模板) 最长回文 -- hdu -- 3068
http://acm.hdu.edu.cn/showproblem.php?pid=3068 最长回文 Time Limit: 4000/2000 MS (Java/Others) Memory ...
- Manacher(输出最长回文串及下标)
http://acm.hdu.edu.cn/showproblem.php?pid=3294 Girls' research Time Limit: 3000/1000 MS (Java/Others ...
- Manacher算法 - 求最长回文串的利器
求最长回文串的利器 - Manacher算法 Manacher主要是用来求某个字符串的最长回文子串. 不要被manacher这个名字吓倒了,其实manacher算法很简单,也很容易理解,程序短,时间复 ...
- ACM题目————最长回文串
Description 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如aba, abba等 Input 输入有多组cas ...
随机推荐
- STM32 SPI接口 DMA normal 和circual区别
DMA有normal和circular两种模式. circular模式: 就调用这个函数一次就可以了,DMA一直开启,一帧数据发送完毕之后里面发送下一帧,中间没有停顿.这样确实是快了,也释放了CPU, ...
- pip 安装requirements.txt 的问题
用新环境 在进行pip 安装的时候, 如果出现不进行安装 ,但是不报错就是满足条件,这个时候重新起一个shell,然后进行pip的安装.
- BigDecimal类处理高精度计算
BigDecimal类处理高精度计算 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数,但 ...
- 快速将json装DTO的GsonFormatPlus插件使用
参考:https://www.jianshu.com/p/8fb0e4274436 https://blog.csdn.net/qq_43039260/article/details/12676582 ...
- 移植openssh-7.5p1(包括openssl-1.0.2l、zlib-1.2.11)到HISI3520d(部署篇)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- Libcurl & Log4cplus 移植和使用 以及 Jsoncpp 简单使用
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 谷歌Linux 运维工程师面试真题
谷歌Linux 运维工程师面试真题 下面是谷歌 Linux 运维工程师面试真题: 1.如何查看当前的 Linux 服务器的运行级别? 答: 'who -r' 和 'runlevel' 命令可以用来查看 ...
- 记录--教你用three.js写一个炫酷的3D登陆页面
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言: 该篇文章用到的主要技术:vue3.three.js 我们先看看成品效果: 高清大图预览(会有些慢): 座机小图预览: 废话不多说, ...
- java实战字符串2:中英字符串相互转换
题目描述 输入字符串为中文拼音号码串或者英文号码串,如果输入是中文拼音号码串则转成英文号码串,如果输入是英文号码串则转成中文号码串. 特殊情况是英文号码串会出现Double + 英文数字或者拼音数值. ...
- Scala 元祖Tuple
1 package chapter07 2 3 object Test10_Tuple { 4 def main(args: Array[String]): Unit = { 5 // 1. 创建元组 ...