最长回文串
一、题目描述
给定一个包含大写字母和小写的字符串s,返回通过这些字母构成的最长的回文串。在构造过程中,请注意区分大小写。
示例1
输入:s = "abccccdd"
输出:7
示例2
输入:s = "a"
输入:1
示例3
输入:s = "aaaaaccc"
输入:7
二、解题思路
最长回文,最长回文就是在所给字符串s中,去除一些字符,可以组成的最长的回文。其特点就是,只能存在一个为奇数次的字符。
三、解题方法
方法一(计数)
使用数组计数,记录每个s中字符出现的频次,由于字符出现偶数次一定可以构成回文,只需要记录不是偶数频次的字符即可。最后从s的总长度中减去不是偶数的频次,加上一个1,最后的1,就是可以将一个字符放在整个回文的最中间。
代码实现
class Solution {
public int longestPalindrome(String s) {
int[] arr = new int[128];
for(char i : s.toCharArray()){
arr[i]++;
}
int count = 0;
for(int i: arr){
count += i%2;
}
return count == 0 ? s.length() :(s.length() - count +1);
}
}
标签:count,字符,示例,int,最长,回文
From: https://www.cnblogs.com/zjjtt/p/16927300.html