↓快轉到主要內容
  1. LeetCode/

LeetCode 884: Uncommon Words from Two Sentences

·1 分鐘· ·
LeetCode Easy Hash-Table String Counting
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: easy 第一次嘗試:2022-09-21

  • 提交紀錄:Wrong Answer → Accepted ×2

解題思路
#

「在一個句子出現剛好一次、另一個句子沒出現」等於「兩個句子合起來只出現一次」。把兩句接起來 split(),計數後取次數為 1 的(Hash Table 模板一)。

我的嘗試
#

第一版忘了 split,直接對字串跑迴圈,數的是字元:"b"、"b" 回傳了中間的空白 [" "]。

正確解法
#

class Solution:
    def uncommonFromSentences(self, s1: str, s2: str) -> List[str]:
        cnt = Counter((s1 + " " + s2).split())
        return [w for w, c in cnt.items() if c == 1]

複雜度
#

時間 O(n + m),空間 O(n + m)。

要特別避免的錯誤
#

  • 要先 split() 成單字;直接 for s in 字串 拿到的是字元。

面試口說整理
#

我把兩個句子接起來切成單字並計數,合起來只出現一次的單字就是答案。時間 O(n + m)。

相關文章

LeetCode 819: Most Common Word
·1 分鐘
LeetCode Easy Array Hash-Table String Counting
LeetCode 819 解題筆記:標點換成空白、全部轉小寫再切單字,計數後找出不在 banned 裡的最多的那個
LeetCode 383: Ransom Note
·1 分鐘
LeetCode Easy Hash-Table String Counting
LeetCode 383 解題筆記:ransomNote 每個字元的需求數量都不能超過 magazine 的數量;Counter 相減為空就成立
LeetCode 387: First Unique Character in a String
·1 分鐘
LeetCode Easy Hash-Table String Queue Counting
LeetCode 387 解題筆記:先計數,再從左到右找第一個次數是 1 的字元
LeetCode 859: Buddy Strings
·1 分鐘
LeetCode Easy Hash-Table String
LeetCode 859 解題筆記:長度要相同;完全相同時要有重複字元;否則剛好兩個位置不同而且交叉相等
LeetCode 771: Jewels and Stones
·1 分鐘
LeetCode Easy Hash-Table String
LeetCode 771 解題筆記:把 jewels 放進集合,數 stones 裡有幾個字元在集合裡
LeetCode 748: Shortest Completing Word
·1 分鐘
LeetCode Easy Array Hash-Table String
LeetCode 748 解題筆記:車牌只看字母並轉小寫計數,找出每個字母次數都夠的最短單字,同長度取最前面的