734 句子相似性

2021-10-09 04:37:20 字數 1312 閱讀 5642

題目描述:

給定兩個句子 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,則再從後向...