2014-12-07 194 views
-4

我已经填写了大部分空白;然而,我被困在这些最后三个,我所尝试的一切都给了我错误。填入空白唯一字符串

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")); 
} 
+1

在'unique'中,使用变量'counts'。它可以在哪里定义?一旦你解决了这个问题,看看['count.get'](http://docs.oracle.com/javase/8/docs/api/java/util/Map.html#get-java.lang.Object -) 将返回。如果它返回'null',需要做什么,但我们想增加1返回的值?最后,在什么条件下你会在结果字符串中追加一个字符?将其插入最后一个缺口,就完成了! – 5gon12eder 2014-12-07 21:58:01

+0

@彼得这看起来该死的很像功课。你知道这不是一个应该为你解决功课的网站吗? – mezzodrinker 2014-12-07 22:00:43

回答

0

1)地图计数 2)数= 0 3)counts.get(C)< = 1

+1

我不认为你的答案是正确的,但我认为彼得应该做自己的功课。 – 5gon12eder 2014-12-07 22:01:04

+0

对3)做了一个小修改。有些人需要一点帮助才能通过:) – 2014-12-07 22:07:44

1

您需要了解该算法的作品。

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

counts.get(c); 

它显示了一个特定角色的计数是如何被请求的? A Map

然后,你必须:

价值:

if (count == null) 

如果你看一下Map#get方法的规范,你会在这个调用返回null

返回看如果这个映射包含了,那么指定的键被映射,或者null ins不映射关键字

当您第一次遇到未在地图上绘制映射的章程时,就是这种情况。所以你需要在地图上为该角色计数。代码的下一块告诉你巫婆值应该初始化:

counts.put(c, count + 1); 

计数首先加比放在地图上,所以对于第一次出现是1你需要有count0(初始化2)

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