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.
Example 1:
Input: A = "this apple is sweet", B = "this apple is sour" Output: ["sweet","sour"]
Example 2:
Input: A = "apple apple", B = "banana" Output: ["banana"]
Note:
- 0 <= A.length <= 200
- 0 <= B.length <= 200
- A and B both contain only spaces and lowercase letters.
Runtime: 8 ms
Memory Usage: 14.9 MB
class Solution {
/**
* @param String $A
* @param String $B
* @return String[]
*/
function uncommonFromSentences($A, $B) {
$x = []; $y = [];
foreach(explode(' ',$A) as $aa) {
$this->add($x, $aa);
}
foreach(explode(' ',$B) as $bb) {
$this->add($y, $bb);
}
$this->rmCommon($x, $y);
$x = array_keys($x);
$y = array_keys($y);
return array_merge(array_diff($x,$y), array_diff($y, $x));
}
function add(&$arr, $v){
if(isset($arr[$v])){
$arr[$v] ++;
} else {
$arr[$v] = 1;
}
}
function rmCommon(&$a,&$b){
foreach($a as $k => $v){
if ($v > 1){
unset ($a[$k]);
unset ($b[$k]);
}
}
foreach($b as $k => $v){
if ($v > 1){
unset ($b[$k]);
unset ($a[$k]);
}
}
}
}