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

最长子序列

程序员文章站 2024-02-24 23:42:46
...

给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。

public int longestPalindrome2nd(String s) {
    char[] chas = s.toCharArray();
    Map<Character, Integer> map = new HashMap<>();
    for (int i = 0; i < chas.length; i++) {
        map.put(chas[i], map.getOrDefault(chas[i], 0) + 1);
    }
    int result = 0;
    for (int cnt : map.values()) {
        result += cnt / 2 * 2; //统计出可以算入回文串长度的个数,/取整
        if (result<s.length()) {
            result++;
        }
    }
    return result;
}
o(n),o(1)注意空间复杂度是o(1)因为字母的个数是确定不随输入而改变