1. 程式人生 > 實用技巧 >LeetCode884-兩句話中的不常見單詞

LeetCode884-兩句話中的不常見單詞

非商業,LeetCode連結附上:

https://leetcode-cn.com/problems/uncommon-words-from-two-sentences/

進入正題。

題目:

給定兩個句子A和B。(句子是一串由空格分隔的單詞。每個單詞僅由小寫字母組成。)

如果一個單詞在其中一個句子中只出現一次,在另一個句子中卻沒有出現,那麼這個單詞就是不常見的。

返回所有不常用單詞的列表。

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

示例:

示例 1:

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

輸入:A = "apple apple", B = "banana"
輸出:["banana"]

提示:

0 <= A.length <= 200
0 <= B.length <= 200
A 和B都只包含空格和小寫字母。

程式碼實現:

public String[] uncommonFromSentences(String A, String B) {

        Map<String, Integer> count = new HashMap<>();
        for (String word : A.split(" ")) {
            count.put(word, count.getOrDefault(word, 0) + 1);
        }
        for (String word : B.split(" ")) {
            count.put(word, count.getOrDefault(word, 0) + 1);
        }

        List<String> ans = new ArrayList<>();
        for (String word : count.keySet()) {
            if (count.get(word) == 1) {
                ans.add(word);
            }
        }

        return ans.toArray(new String[ans.size()]);//列表轉陣列
}
//時間複雜度O(m + n), m、n分別是A、B的長度
//空間複雜度O(m + n)

  

分析:

將兩個字串看成一個大的字串,其中只出現一次的單詞,即為目標物件。

準確的理解題目的意思,並首先進行簡化很重要。

--End