leetcode 890 查詢和替換模式

2021-09-02 04:01:32 字數 1244 閱讀 6264

你有乙個單詞列表words和乙個模式pattern,你想知道words中的哪些單詞與模式匹配。

如果存在字母的排列p,使得將模式中的每個字母x替換為p(x)之後,我們就得到了所需的單詞,那麼單詞與模式是匹配的。

(回想一下,字母的排列是從字母到字母的雙射:每個字母對映到另乙個字母,沒有兩個字母對映到同乙個字母。)

返回words中與給定模式匹配的單詞列表。

你可以按任何順序返回答案。

示例:

輸入:words = ["abc","deq","mee","aqq","dkd","ccc"], pattern = "abb"輸出:["mee","aqq"]解釋:"mee" 與模式匹配,因為存在排列 。

"ccc" 與模式不匹配,因為 不是排列。

因為 a 和 b 對映到同乙個字母。

1 <= pattern.length = words[i].length <= 20

根據題意就是要在words裡找到和pattern模式相同的字串。

遍歷words,取出每個word,將其與pattern比對,如果模式相同則加入結果集中。

要判斷乙個word和pattern模式是否相同,可以設兩個map來實現,建立word[i]和pattern[i]之間的雙對映。當word[i]和pattern[i]之間還沒有建立對映,則為其建立對映:map1[word[i]]=pattern[i],map2[pattern[i]]=word[i]。若發現word[i]或pattern[i]已有對映卻不是指向的對方,即map1[word[i]]!=pattern[i]或map2[pattern[i]]!=word[i],則說明模式不相同。

需要注意的是遍歷words時記得把兩個map清空,並設立flag來標記word與pattern模式是否相同。遍歷一遍後返回結果集即可。

class solution 

else if(m1.containskey(c1)&&m1.get(c1)!=c2||m2.containskey(c2)&&m2.get(c2)!=c1)

}if(flag)

}return res;

}}

leetcode 890 查詢和替換模式

題目 你有乙個單詞列表 words 和乙個模式 pattern,你想知道 words 中的哪些單詞與模式匹配。如果存在字母的排列 p 使得將模式中的每個字母 x 替換為 p x 之後,我們就得到了所需的單詞,那麼單詞與模式是匹配的。回想一下,字母的排列是從字母到字母的雙射 每個字母對映到另乙個字母,...

LeetCode刷題筆記 890 查詢和替換模式

你有乙個單詞列表 words 和乙個模式 pattern,你想知道 words 中的哪些單詞與模式匹配。如果存在字母的排列 p 使得將模式中的每個字母 x 替換為 p x 之後,我們就得到了所需的單詞,那麼單詞與模式是匹配的。回想一下,字母的排列是從字母到字母的雙射 每個字母對映到另乙個字母,沒有兩...

LeetCode 競賽題 890 查詢和替換模式

你有乙個單詞列表words和乙個模式pattern,你想知道words中的哪些單詞與模式匹配。如果存在字母的排列p,使得將模式中的每個字母x替換為p x 之後,我們就得到了所需的單詞,那麼單詞與模式是匹配的。回想一下,字母的排列是從字母到字母的雙射 每個字母對映到另乙個字母,沒有兩個字母對映到同乙個...