最长回文串

描述

给出一个包含大小写字母的字符串。求出由这些字母构成的最长的回文串的长度是多少。

数据是大小写敏感的,也就是说,"Aa" 并不会被认为是一个回文串。

注意事项

假设字符串的长度不会超过 1010。

样例
给出 s = "abccccdd" 返回 7
一种可以构建出来的最长回文串方案是 "dccaccd"。

考察点
  • char的装箱操作
    • List remove动作
      • E remove(int index);
        • int、char等基本类型会默认调用这个方法
      • boolean remove(Object o);
  • 大小写字母的区分

答案
public int longestPalindrome(String s) {
    // Write your code here
    int length = 0;
    List<Character> characters = new ArrayList<>();
    char[] ss = s.toCharArray();
    for (char key : ss) {
        if (characters.contains(key)) {
            characters.remove(new Character(key));
            length += 2;
        } else {
            characters.add(key);
        }
    }

    if (!characters.isEmpty()) {
        length += 1;
    }
    return length;
}