本文共 941 字,大约阅读时间需要 3 分钟。
转:
本文主要记录一下leetcode之最长回文串
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindrome著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution { public int longestPalindrome(String s) { Map countMap = new HashMap<>(); for (char c : s.toCharArray()) { countMap.put(c, countMap.getOrDefault(c, 0) + 1); } int result = 0; for (Integer value : countMap.values()) { if (value % 2 == 0) { result = result + value; } else { result = result + value / 2 * 2; if (result % 2 == 0) { result++; } } } return result; }}
这里先统计一下每个字符的个数,之后对于偶数个直接累加,对于奇数个先累加偶数部分,最后再判断结果是否是偶数,若是偶数则剩余的一个奇数可以算进去。
转: