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;}
要问我代码为什么写得这么屌?戳下面的链接你就知道,想成为码王一样的男人吗?我的代码都放在那了,想要吗?还等什么?赶快去拿吧!!
网友评论