【双指针】LeetCode 409. 最长回文串

题目链接

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;
    }
}
posted @ 2023-01-21 19:27  Frodo1124  阅读(68)  评论(0编辑  收藏  举报