填写Blank-Unique字符串

时间:2014-12-07 21:52:56

标签: java

我已经填写了大部分空白;但是,我坚持最后三个,我尝试的一切都给了我错误。

public static String unique(String s) {
    _____ = new HashMap<Character, Integer>();

    for(char c : s.toCharArray()) {
        Integer count = counts.get(c);
        if(count == null) {
            _____
        }
        counts.put(c, count + 1);
    }
    String result = "";
    for(char c : s.toCharArray()) {
        if(_____) {
            result = result + c;
        }
    }
    return result;
}

public void test_Unique() {
    assertEquals("km", unique("ffifkmi"));
    assertEquals("es", unique("test"));
    assertEquals("confuse", unique("confuse"));
}

2 个答案:

答案 0 :(得分:1)

您需要了解算法的工作原理。

迭代字符串的字符并计算其中每个字符的出现次数。要将一个计数与一个角色相关联,你需要一个Map (1),它在你的样本中非常明显,因为它已经显示了它的构造,所以你实际上只需要一个变量用于地图。现在应该如何命名这个变量?你有这段代码

counts.get(c);

显示了从什么角度请求特定字符的计数?一个Map

然后你有:

if  (count  ==  null)

如果您查看Map#get方法的规范,您会看到此调用何时返回null

  

<强>返回:

     

指定键映射到的值,如果此映射不包含键的映射,则 null

当您第一次遇到地图中尚未映射的章程时,就会出现这种情况。所以你需要在地图上计算该角色的数量。下一段代码告诉你应该初始化的女巫值:

counts.put(c, count + 1);

计数首先递增而不是放在地图上,因此对于第一次出现1,您需要使用count 初始化0(2)

然后,您再次开始遍历字符串的字符以确定哪个是唯一的。这是什么意思?确切地说,count必须等于1 (3)

答案 1 :(得分:0)

1)地图计数 2)count = 0 3)counts.get(c)&lt; = 1