模拟法:双HashMap两个字符串合并成一个,找只出现过一次
句子 是一串由空格分隔的单词。每个 单词 仅由小写字母组成。
如果某个单词在其中一个句子中恰好出现一次,在另一个句子中却 没有出现 ,那么这个单词就是 不常见的 。
给你两个 句子 s1 和 s2 ,返回所有 不常用单词 的列表。返回列表中单词可以按 任意顺序 组织。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/uncommon-words-from-two-sentences
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
模拟法:双HashMap
class Solution { public String[] uncommonFromSentences(String s1, String s2) { String[] arr1 = s1.split(" "); String[] arr2 = s2.split(" "); HashMap两个字符串合并成一个,找只出现过一次sm1=new HashMap<>(); HashMap sm2=new HashMap<>(); HashSet 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(" "); HashMapmap=new HashMap<>(); HashSet 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()]); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)