-
Description
We are given two sentences A and B. (A sentence is a string of space separated words. 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.
Return a list of all uncommon words.
You may return the list in any order.
-
Note
0 <= A.length <= 200
0 <= B.length <= 200
A and B both contain only spaces and lowercase letters. -
Example
Input: A = “this apple is sweet”, B = “this apple is sour”
Output: [“sweet”,“sour”]Input: A = “apple apple”, B = “banana”
Output: [“banana”] -
Solution
public static String[] uncommonFromSentences(String A, String B) {
String[] result;
String[] mA = A.split(" ");
String[] mB = B.split(" ");
int maxIndex = mA.length > mB.length ? mA.length : mB.length;
if (maxIndex == 0) {
return null;
}
if (A.length() == 0) {
return mB;
}
if (B.length() == 0) {
return mA;
}
Map<Integer, String> mapA = new HashMap<>();
Map<Integer, String> mapB = new HashMap<>();
Set<String> resultSet;
for (int i = 0; i < mA.length; i++) {
mapA.put(i, mA[i]);
}
for (int i = 0; i < mB.length; i++) {
mapB.put(i, mB[i]);
}
resultSet = new HashSet<>(mapA.size() > mapB.size() ? mapA.size() : mapB.size());
for (int i = 0; i < mA.length; i++) {
if (mapA.containsValue(mA[i]) != mapB.containsValue(mA[i])) {
resultSet.add(mA[i]);
}
}
for (int i = 0; i < mB.length; i++) {
if (mapB.containsValue(mB[i]) != mapA.containsValue(mB[i])) {
resultSet.add(mB[i]);
}
}
result = resultSet.toArray(new String[resultSet.size()]);
return result;
}