我一直在嘗試CodeBat上的新部分,map1 & 2.我已經完成map1,並且我在map2的一半,但我只是停留在這個問題上。我似乎無法弄清楚如何組合兩個字符串。在地圖中結合兩個不同的字符串
鑑於非空字符串數組,返回一個
Map<String, String>
與看出對於每個不同的第一字符的鍵,用 所有字符串開始與該字符在它們出現在 順序附加到一起的值陣列。
例子:
firstChar(["salt", "tea", "soda", "toast"]) → {"t": "teatoast", "s": "saltsoda"}
firstChar(["aa", "bb", "cc", "aAA", "cCC", "d"]) → {"d": "d", "b": "bb", "c": "cccCC", "a": "aaaAA"}
firstChar([]) → {}
這裏是我的代碼:
public Map<String, String> firstChar(String[] strings)
{
Map<String, String> map = new HashMap<String, String>();
String x = "";
for (String s: strings)
{
if (s.substring(0,1) == s.substring(0,1))
x += s;
map.put(s.substring(0,1), x);
}
return map;
}
我只得到{"d": "d", "b": "", "c": "", "a": ""}
我也試過s.substring(0, 1, map.get(s) + map.get(s))
只返回null
。如果任何人都可以向我解釋這將是不勝感激!
謝謝!
什麼是你的條件呢?您將子字符串的結果與自身進行比較。 – mhoff
可能重複的[我如何比較Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – azurefrog
我現在無法測試這個,但是您想要執行以下操作:對於每個字符串計算'k = s.charAt(0)'。如果'k'已經在地圖中,請獲取它的值,並將其與's'連接並再次放入'k'。如果不是簡單地把's'換成'k'。 – mhoff