哈哈哈五次遍历,我是魔鬼
class Solution {
public String[] uncommonFromSentences(String A, String B) {
String[] s1 = A.split("\\s+");
String[] s2 = B.split("\\s+");
HashMap<String,Integer> map1 = new HashMap<>();
HashMap<String,Integer> map2 = new HashMap<>();
for(int i=0;i<s1.length;i++){
map1.put(s1[i],map1.getOrDefault(s1[i],0)+1);
}
for(int i=0;i<s2.length;i++){
map2.put(s2[i],map2.getOrDefault(s2[i],0)+1);
}
List<String> list = new ArrayList<>();
for(int i=0;i<s1.length;i++){
if(map1.get(s1[i])==1 && !map2.containsKey(s1[i])){
list.add(s1[i]);
}
}
for(int i=0;i<s2.length;i++){
if(map2.get(s2[i])==1 && !map1.containsKey(s2[i])){
list.add(s2[i]);
}
}
String[] res = new String[list.size()];
for(int i=0;i<list.size();i++){
res[i] = list.get(i);
}
return res;
}
}
其实就是找在两个字符串中只出现一次的。那可用一个map来存储就行。
class Solution {
public String[] uncommonFromSentences(String A, String B) {
String[] s1 = A.split("\\s+");
String[] s2 = B.split("\\s+");
HashMap<String,Integer> map1 = new HashMap<>();
for(int i=0;i<s1.length;i++){
map1.put(s1[i],map1.getOrDefault(s1[i],0)+1);
}
for(int i=0;i<s2.length;i++){
map1.put(s2[i],map1.getOrDefault(s2[i],0)+1);
}
List<String> list = new ArrayList<>();
for(String tmp : map1.keySet()){
if(map1.get(tmp)==1){
list.add(tmp);
}
}
String[] res = new String[list.size()];
for(int i=0;i<list.size();i++){
res[i] = list.get(i);
}
return res;
}
}
感觉也没太大差别,就是快了一点