2014-12-07 207 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)