一、题目粗心
给定一个蕴含大写字母和小写字母的字符串 s,返回 通过这些字母结构成的 最长的回文串。
在结构过程中,请留神 辨别大小写。比方 “Aa” 不能当做一个回文字符串。
示例 1:
输出:s = “abccccdd”
输入:7
解释:
咱们能够结构的最长的回文串是 ”dccaccd”, 它的长度是 7。
示例 2:
输出:s = “a”
输出:1
提醒:
- 1 <= s.length <= 2000
- s 只由小写 和 / 或 大写英文字母组成
起源:力扣(LeetCode)
链接:https://leetcode.cn/problems/…
著作权归领扣网络所有。商业转载请分割官网受权,非商业转载请注明出处。
二、解题思路
思路:先统计每个字符呈现的次数,再遍历统计后的字符次数,如果是偶数次,那么肯定能够是回文字符串的一部分,加上该次数;如果是奇数 n 字,那么加上 n - 1 次;最初判断如果呈现过奇数次的字符,那么最初后果加 1。
三、解题办法
3.1 Java 实现
public class Solution {public int longestPalindrome(String s) {Map<Character, Integer> map = new HashMap<>();
for (char c : s.toCharArray()) {map.put(c, map.getOrDefault(c, 0) + 1);
}
boolean odd = false;
int ans = 0;
for (Integer count : map.values()) {if (count % 2 == 0) {ans += count;} else {
odd = true;
ans += (count - 1);
}
}
ans += odd ? 1 : 0;
return ans;
}
}
四、总结小记
- 2022/8/31 不合理的治理是造成内耗的起因之一