409. 最长回文串
程序员文章站
2024-03-26 13:28:47
...
题目:
题解:
1. 注意:
2. 思路1:
3. 思路2:
4. 思路3:
5. 坑点:
代码:
/**
* code409
*/
public class code409 {
public static int longestPalindrome(String s) {
int a[] = new int[128];
char C[] = s.toCharArray();
// 因此要先数出给定字符串中各个字符的数量,这是第一个for循环完成的工作。
for (int i = 0; i < C.length; i++) {
a[C[i]]++;
}
int count = 0;
// 然后是把字符出现数量加起来,偶数次数的直接加,奇数次数的减一后再加。
for (int i = 0; i < 128; i++) {
count += a[i] - a[i] % 2;
}
// 回文串的长度和s不相同,说明存在单个字符,把它加到最中间的位置,回文串长度+1。
// 如果最终的长度小于原字符串的长度,说明里面某个字符出现了奇数次,那么那个字符可以放在回文串的最中间位置,所以额外再加一。
if (count != s.length()) {
return count + 1;
}
// 回文串的长度和s相同,直接返回回文串长度。
return count;
}
public static void main(String[] args) {
String s = "abccccdd";
int res = longestPalindrome(s);
System.out.println(res);
}
}
参考:
上一篇: 200. 岛屿数量
下一篇: 大数据从0到1-流式计算Flink