减少字符串 - 压缩

时间:2018-03-29 01:27:26

标签: java string

我正在练习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();

}

1 个答案:

答案 0 :(得分:0)

问题在于如何选择输出。 HashSets和HashMaps没有任何与它们相关的排序。在您的测试用例中,输出可以是ac OR ca。

要解决这个问题,你可以做各种各样的事情。我看到的最快的方法是拿你的原始字符串,让我们说,然后打电话

s.replace(c,"")

永远的char你需要删除。

我怀疑这是解决这个问题的最接近,甚至是温和,有效的方法,但它应该有效。