最长回文串的长度

最长回文串的长度

问题

这个题目说的是,给你一个包含大小写英文字母的字符串,你要用这些字母构建一个最长的回文字符串,并返回它的长度。

比如说,给你的字符串 s 是:

aaabccdd

你能用它构建的回文串的最大长度是 7,因此你要返回的就是数字 7。

长度为 7 的回文串有多种构建方式,随便举一种,比如 acdbdca

代码

public class AlgoCasts {

  // Time: O(n), Space: O(m)
  public int lengthOfLongestPalindrome(String s) {
    int[] d = new int[256];
    int oddNum = 0;
    for (char c: s.toCharArray())
      ++d[c];
    for (int count: d)
      if (count % 2 == 1)
        ++oddNum;
    int unUsed = Math.max(0, oddNum-1);
    return s.length() - unUsed;
  }

}

  转载请注明: ForwardXu 最长回文串的长度

 上一篇
求两个有序数组的中位数 求两个有序数组的中位数
求两个有序数组的中位数问题 这个题目说的是,给你两个排好序的整数数组 nums1 和 nums2,假设数组是以递增排序的,数组的大小分别是 m 和 n。你要找到这两个数组的中位数。要求算法的时间复杂度是 O(log(m+n))。 这里两个数
2018-12-09
下一篇 
数据流中第 K 大的元素 数据流中第 K 大的元素
数据流中第 K 大的元素问题 这个题目说的是,你要实现一个类,用来求数据流中第 K 大的元素。你需要实现这个类中的两个函数。第一个是构造函数,它接收一个整数数组以及一个整数 K,整数数组作为初始数据流。第二个是 add 函数,接收一个整数表
2018-12-09
  目录