题目来源于力扣(LeetCode)
一、题目
题目相关标签:哈希表
提示:
0 <= A.length <= 200
0 <= B.length <= 200
A
和B
都只包含空格和小写字母。
二、解题思路
-
定义 Map,并通过字符串的
split()
方法,对字符串 A 与 B 中的进行空格的分隔 -
遍历两个字符串数组,将字符串与字符串出现的次数添加到 Map 中
-
遍历 Map,对字符串(键)出现次数(值)等于 1 的字符串元素添加到 list 结果中
三、代码实现
public static String[] uncommonFromSentences(String A, String B) {
Map<String, Integer> map = new HashMap<>();
List<String> list = new ArrayList<>();
String[] strsA = A.split(" ");
String[] strsB = B.split(" ");
for (String str : strsA) {
map.put(str, map.getOrDefault(str, 0) + 1);
}
for (String str : strsB) {
map.put(str, map.getOrDefault(str, 0) + 1);
}
Set<String> strs = map.keySet();
for (String str : strs) {
// 将单词出现次数等于 1 的字符串加入结果集中
if (map.get(str) < 2) {
list.add(str);
}
}
return list.toArray(new String[list.size()]);
}
四、执行用时
五、部分测试用例
public static void main(String[] args) {
String A = "this apple is sweet", B = "this apple is sour";
// output: "sweet","sour"
// String A = "apple apple", B = "banana"; // output: "banana"
String[] result = uncommonFromSentences(A, B);
System.out.println(Arrays.toString(result));
}