Pistachiout的博客

每天多学一点知识,就少写一行代码

LeetCode409.最长回文串

在这里插入图片描述

解题思路

桶装法,字母出现偶数次一定可以计入总长度,再用count记录所有奇数余1次数,最后用长度减去count+1,因为所有的余1只能留下一个当中心

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public int longestPalindrome(String s) {
// 找出可以构成最长回文串的长度
int[] arr = new int[128];
for(char c : s.toCharArray()) {
arr[c]++;
}
int count = 0;
for (int i : arr) {
count += (i % 2);//比如有5个a,可以取4个a形成回文串,count记录所有奇数余1次数,最后只能加1次
}
return count == 0 ? s.length() : (s.length() - count + 1);
}
}//s.toCharArray

-------------本文结束感谢您的阅读-------------