map的每一個鍵值對里面有一個value值,這一特點可以用來為一個數組里面的每個元素設置一個獨有的不會被其他因素影響的flag。下面用一個例子來說明這個用法:
例子 :給出一個字符串數組,如若此數組中元素為第偶數次出現,則把它拼接到將要返回的結果中;
示例:wordAppend(["a", "b", "b", "b", "a", "c", "a", "a"]) → "baa"
wordAppend(["a", "b", "b", "b", "a", "c", "a", "a", "a", "b", "a"]) → "baaba
wordAppend(["not", "and", "or", "and", "this", "and", "or", "that", "not"]) → "andornot"
在這里如若運用字符串數組遍歷的方法,那么就會面臨很多問題:比如要為每個不同的元素立flag,以得知它是第幾次在數組中出現,這就有點復雜了,因為還要考慮每個元素出現的先后順序不同。而用map的鍵值對的話邏輯一目了然。
用map方法:
public String wordAppend(String[] strings) {
Map<String,Inteer>map = new HashMap<String,Integer>();
String str="";
int count=1;
for(int i= 0; i<strings.length; i++){
if(map.containsKey(strings[i])){
int value=map.get(strings[i]);
value++;
map.put(strings[i],value);
if( map.get(strings[i])%2==0){
str+=strings[i];
}
}else{
map.put(strings[i],count);
}
}
return str;
}-
用數組遍歷方法:
public String wordAppend(String[] strings) {
Map<String,Integer>map = new HashMap<String,Integer>();
String str="";
for(int i= 0; i<strings.length; i++){
int count=0;
for(int j=0; j<=i; j++){
if(strings[i].equals(strings[j])){
count++;
}
}
if(count%2==0){
str+=strings[i];
}
}
return str;}
要問我代碼為什么寫得這么屌?戳下面的鏈接你就知道,想成為碼王一樣的男人嗎?我的代碼都放在那了,想要嗎?還等什么?趕快去拿吧??!