文章目录
句子 是一串由空格分隔的单词。每个 单词 仅由小写字母组成。
如果某个单词在其中一个句子中恰好出现一次,在另一个句子中却 没有出现 ,那么这个单词就是 不常见的 。
给你两个 句子 s1 和 s2 ,返回所有 不常用单词 的列表。返回列表中单词可以按 任意顺序 组织。
模拟法:双HashMap
class Solution {
public String[] uncommonFromSentences(String s1, String s2) {
String[] arr1 = s1.split(" ");
String[] arr2 = s2.split(" ");
HashMap<String,Integer> sm1=new HashMap<>();
HashMap<String,Integer> sm2=new HashMap<>();
HashSet<String> end=new HashSet<>();
for (String s : arr1) {
sm1.put(s,sm1.getOrDefault(s,0)+1);
}
for(String s:arr2){
sm2.put(s,sm2.getOrDefault(s,0)+1);
}
for(String s:arr1){
if(sm1.get(s)==1 && sm2.containsKey(s)==false){
end.add(s);
}
}
for(String s:arr2){
if(sm2.get(s)==1 && sm1.containsKey(s)==false){
end.add(s);
}
}
return end.toArray(new String[0]);
}
}
两个字符串合并成一个,找只出现过一次
数字上没有方法一快,想了想是数据量原因,这个方法比上面那个好一大截
class Solution {
public String[] uncommonFromSentences(String s1, String s2) {
s1=s1+" "+s2;
String[] arr=s1.split(" ");
HashMap<String ,Integer> map=new HashMap<>();
HashSet<String> set=new HashSet<>();
for(String s:arr){
map.put(s,map.getOrDefault(s,0)+1);
}
for(String s:arr){
if(map.get(s)==1){
set.add(s);
}
}
return set.toArray(new String[set.size()]);
}
}