LeetCode简单题之两句话中的不常见单词
生活随笔
收集整理的這篇文章主要介紹了
LeetCode简单题之两句话中的不常见单词
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
句子 是一串由空格分隔的單詞。每個 單詞 僅由小寫字母組成。
如果某個單詞在其中一個句子中恰好出現一次,在另一個句子中卻 沒有出現 ,那么這個單詞就是 不常見的 。
給你兩個 句子 s1 和 s2 ,返回所有 不常用單詞 的列表。返回列表中單詞可以按 任意順序 組織。
示例 1:
輸入:s1 = “this apple is sweet”, s2 = “this apple is sour”
輸出:[“sweet”,“sour”]
示例 2:
輸入:s1 = “apple apple”, s2 = “banana”
輸出:[“banana”]
提示:
1 <= s1.length, s2.length <= 200
s1 和 s2 由小寫英文字母和空格組成
s1 和 s2 都不含前導或尾隨空格
s1 和 s2 中的所有單詞間均由單個空格分隔
來源:力扣(LeetCode)
解題思路
??這道題一般的流程就是分別找出兩個字符串中各自詞頻為1的單詞,然后分別在對方的字符串中查找自身的詞頻為1的單詞,看看是否能找到。得益于python的字典就是一個很好的哈希表,查找的速度便只是O(1)的時間復雜度,而整個算法的時間復雜度就是建立字典的時間復雜度O(len(s1)+len(s2))
class Solution:def uncommonFromSentences(self, s1: str, s2: str) -> List[str]:s1=s1.split(' ') #以空格分割得到單詞s2=s2.split(' ')d1={} #建立各自的詞頻表d2={}temp=[]for i in s1:d1[i]=d1.get(i,0)+1for i in s2:d2[i]=d2.get(i,0)+1for i,j in d1.items():if j==1 and i not in d2:temp.append(i)for i,j in d2.items():if j==1 and i not in d1:temp.append(i)return temp
總結
以上是生活随笔為你收集整理的LeetCode简单题之两句话中的不常见单词的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之二叉搜索树中的众
- 下一篇: LeetCode简单题之构造矩形