我试图找到最长回文可能,给出一个String。问题参数表明这是区分大小写,因此“A”!=“A”。下面我试图传递的本文给出的测试案例九十五分之四十九,但我不知道我要去哪里错了...查找最长的回文,代码过半测试用例
public class Solution {
public int longestPalindrome(String s) {
if (s.equals("")) {
return 0;
}
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (map.containsKey(c)) {
map.put(c, map.get(c) + 1);
} else {
map.put(c, 1);
}
}
int total = 0;
int greatestOdd = 0;
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
int value = entry.getValue();
if (value % 2 == 0) {
total += value;
} else {
if (value > greatestOdd) {
greatestOdd = value;
}
}
}
total += greatestOdd;
return total;
}
}
的想法是,回文组成,其计数是连和一个字符的字符是有一个奇数(或可能有0个字符和一个奇数)。所以我跟踪了HashMap中的所有字符数。
然后我遍历HashMap中,如果他们甚至所有的值,添加到总量。我还跟踪最大单的(初始化为0的情况下,有没有字母与奇计)。
我认为这是正确的想法,但事情是关闭...
链接锻炼:https://leetcode.com/problems/longest-palindrome/?tab=Description
这个心不是代码审查。你能不能给我们一些评论?它有什么作用? – Tacolibre
有了这个逻辑,像bbadd字符串会被认为是回文? – samson
你可以链接到锻炼; Tibial?我想自己测试一下。 – Tacolibre