我已经填写了大部分空白;但是,我坚持最后三个,我尝试的一切都给了我错误。
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"));
}
答案 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