leetcode-884-easy
Uncommon Words from Two Sentences
A sentence is a string of single-space separated words where each word consists only of lowercase letters.
A word is uncommon if it appears exactly once in one of the sentences, and does not appear in the other sentence.
Given two sentences s1 and s2, return a list of all the uncommon words. You may return the answer in any order.
Example 1:
Input: s1 = "this apple is sweet", s2 = "this apple is sour"
Output: ["sweet","sour"]
Example 2:
Input: s1 = "apple apple", s2 = "banana"
Output: ["banana"]
Constraints:
1 <= s1.length, s2.length <= 200
s1 and s2 consist of lowercase English letters and spaces.
s1 and s2 do not have leading or trailing spaces.
All the words in s1 and s2 are separated by a single space.
思路一:先把两个句子转换成 map,然后分别遍历两个 map 的 key,最后合并符合条件的结果
public String[] uncommonFromSentences(String s1, String s2) {
Map<String, Integer> words1 = new HashMap<>();
Map<String, Integer> words2 = new HashMap<>();
String[] arr1 = s1.split(" ");
String[] arr2 = s2.split(" ");
for (String word : arr1) {
words1.compute(word, (k, v) -> v == null ? 1 : v + 1);
}
for (String word : arr2) {
words2.compute(word, (k, v) -> v == null ? 1 : v + 1);
}
List<String> result = new ArrayList<>();
for (String word : words1.keySet()) {
if (!words2.containsKey(word) && words1.get(word) == 1) {
result.add(word);
}
}
for (String word : words2.keySet()) {
if (!words1.containsKey(word) && words2.get(word) == 1) {
result.add(word);
}
}
return result.toArray(new String[0]);
}
思路二:看了一下官方的解法,思路更好,先把句子合并在一起,只要统计出现过一次的单词就行

浙公网安备 33010602011771号