欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

409. 最长回文串

程序员文章站 2024-03-26 13:28:47
...

题目:

409. 最长回文串
409. 最长回文串

题解:

1. 注意:
409. 最长回文串
409. 最长回文串
2. 思路1:
409. 最长回文串
409. 最长回文串
3. 思路2:
409. 最长回文串
4. 思路3:
409. 最长回文串
5. 坑点:
409. 最长回文串

代码:

/**
 * 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);
    }
}

参考:

  1. 最长回文串
  2. Java的2种实现方法~
  3. 题本身没有什么难的,说几个容易出错的坑吧。
  4. 409. 最长回文串 双100%题解
  5. 图解回文串 C++ 超过了100%的提交
  6. Java toCharArray() 方法
  7. ASCII