【双指针】LeetCode 409. 最长回文串
题目链接
思路
遍历字符串过程中统计字符出现个数,如果达到2则说明可以放到回文串的两端,需要 result += 2
。
遍历完之后的回文串如果长度小于 s,说明 s 中存在奇数字符,则返回 result + 1
。因为放两个奇数字符会破坏回文性。
代码
class Solution {
public int longestPalindrome(String s) {
char[] occurs = new char[128];
int result = 0;
for(char c : s.toCharArray()){
occurs[c]++;
if(occurs[c] == 2){
result += 2;
occurs[c] = 0;
}
}
return result < s.length() ? result + 1 : result;
}
}