884. 两句话中的不常见单词

给定两个句子 A 和 B 。 (句子是一串由空格分隔的单词。每个单词仅由小写字母组成。)

如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。

返回所有不常用单词的列表。

您可以按任何顺序返回列表。

示例 1:
输入:A = "this apple is sweet", B = "this apple is sour"
输出:["sweet","sour"]

示例 2:
输入:A = "apple apple", B = "banana"
输出:["banana"]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/uncommon-words-from-two-sentences
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解

解1

/**
 * @param {string} A
 * @param {string} B
 * @return {string[]}
 */
var uncommonFromSentences = function(A, B) {
    let res = []
    A = A.split(' ')
    B = B.split(' ')
    for (let i in A) {
        if (A.indexOf(A[i]) == A.lastIndexOf(A[i]) && B.indexOf(A[i]) == -1) {
            res.push(A[i])
        }
    }
    for (let i in B) {
        if (B.indexOf(B[i]) == B.lastIndexOf(B[i]) && A.indexOf(B[i]) == -1) {
            res.push(B[i])
        }
    }
    return res
};

解2

拼接A、B,出现次数为1的单词即为结果

/**
 * @param {string} A
 * @param {string} B
 * @return {string[]}
 */
var uncommonFromSentences = function(A, B) {
    A = (A + ' ' + B).split(' ')
    B = {}
    for (let i = 0; i < A.length; i++) {
        if (A[i] != '') {
            if (B[A[i]]) {
                B[A[i]] += 1
            } else {
                B[A[i]] = 1
            }
        }
    }
    let res = []
    for (let i in B) {
        if (B[i] == 1) {
            res.push(i)
        }
    }
    return res
};