題目描述:
給定兩個句子 words1, words2 (每個用字串陣列表示),和乙個相似單詞對的列表 pairs ,判斷是否兩個句子是相似的。
例如,當相似單詞對是 pairs = [[「great」, 「fine」], [「acting」,「drama」], [「skills」,「talent」]]的時候,「great acting skills」 和 「fine drama talent」 是相似的。
注意相似關係是不具有傳遞性的。例如,如果 「great」 和 「fine」 是相似的,「fine」 和 「good」 是相似的,但是 「great」 和 「good」 未必是相似的。
但是,相似關係是具有對稱性的。例如,「great」 和 「fine」 是相似的相當於 「fine」 和 「great」 是相似的。
而且,乙個單詞總是與其自身相似。例如,句子 words1 = [「great」], words2 = [「great」], pairs = 是相似的,儘管沒有輸入特定的相似單詞對。
最後,句子只會在具有相同單詞個數的前提下才會相似。所以乙個句子 words1 = [「great」] 永遠不可能和句子 words2 = [「doubleplus」,「good」] 相似。
注:
words1 and words2 的長度不會超過 1000。
pairs 的長度不會超過 2000。
每個pairs[i] 的長度為 2。
每個 words[i] 和 pairs[i][j] 的長度範圍為 [1, 20]。
方法1:
主要思路:
(1)將相似單詞對列表使用unordered_map進行統計對映,方便後面快速確定存在性;
(2)由於可能存在乙個相似於幾個的情形,故這裡使用string對映vector< string >來統計;
class
solution
//將相似單詞列表進行對映統計
unordered_map> mp;
for(
auto
& pair:pairs)
//判斷兩句話的相似性
for(
int i=
0;isize()
;++i)
if(mp.
count
(words1[i]))
}if(j!=vec.
size()
)}return
false;}
return
true;}
};
LeetCode 734 句子相似性(雜湊)
給定兩個句子 words1,words2 每個用字串陣列表示 和乙個相似單詞對的列表 pairs 判斷是否兩個句子是相似的。例如,當相似單詞對是pairs great fine acting drama skills talent 的時候,great acting skills 和 fine dra...
856 句子相似性
中文english 給出兩個句子words1和words2 每個用乙個字串陣列表示 和乙個相似詞對陣列pairs,你需要判斷兩個句子是否相似。例如,如果相似詞對是pairs great fine acting drama skills talent 那麼words1 great acting ski...
1813 句子相似性 III
先把每個句子分成乙個個單詞 然後比較即可,設定flag1 flag2,如果第一次出現不一樣flag 1,之後若一樣flag2 1,若再次不一樣,同時若flag2 1,就是false 如果到最後短的句子沒遍歷到尾,則false 有a a a a a a a a情形 如果從前向後比false,則再從後向...