我正在练习Strings编程示例。我想减少给定的字符串。它应该消除一个字符,如果它是偶数 示例:输入 - aaabbc,输出应为:ac
我使用HashMap来计算和存储字符和计数值,并使用值%2进行计算然后继续或者打印输出。但是一些测试用例在Hackerrank中失败了。你能帮我解决一下这个问题吗?
static String super_reduced_string(String s){
HashMap<Character, Integer> charCount = new HashMap<Character, Integer>();
StringBuilder output = new StringBuilder();
if (s == null || s.isEmpty()) {
return "Empty String";
}
char[] arr = s.toCharArray();
for (int i = 0; i < s.length(); i++) {
char c = arr[i];
if (!charCount.containsKey(c)) {
charCount.put(c,1);
} else {
charCount.put(c,charCount.get(c)+1);
}
}
for (char c:charCount.keySet()) {
if (charCount.get(c) % 2 != 0) {
output.append(c);
}
}
return output.toString();
}
答案 0 :(得分:0)
问题在于如何选择输出。 HashSets和HashMaps没有任何与它们相关的排序。在您的测试用例中,输出可以是ac OR ca。
要解决这个问题,你可以做各种各样的事情。我看到的最快的方法是拿你的原始字符串,让我们说,然后打电话
s.replace(c,"")
永远的char你需要删除。
我怀疑这是解决这个问题的最接近,甚至是温和,有效的方法,但它应该有效。