LeetCode ID 890 查詢和替換模式

2021-08-27 14:21:15 字數 1439 閱讀 8323

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

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

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

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

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

示例

輸入:words = ["abc","deq","mee","aqq","dkd","ccc"], pattern = "abb"

輸出:["mee","aqq"]

解釋:"mee" 與模式匹配,因為存在排列 。

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

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

1

<= words.length

<= 50

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

<= 20

1.要滿足將模式中的字母替換完後就得到需要的單詞,那麼該模式就應與所需字串長度相等。

2.對任意字串word按pattern進行字母替換排序。

(1)將word第1次出現的字母替換為pattern的第1次出現的字母

(2)將word第2次出現的字母替換為pattern的第2次出現的字母

(3)一直迴圈,直到遍歷完pattern的所有不同字母

注意:替換的過程中不能出現將替換過來的新字元再次被替換,這裡用flag來標記。

3. 此時,如果word和pattern相等,則原始word與模式匹配;否則不匹配。

public listfindandreplacepattern(string words, string pattern) 

}listresult = new arraylist();

for (string word : words)

}char tmp= word.tochararray();

int flag = new int[word.tochararray().length];

if (pattern_char.size() != word_char.size())

for (int i = 0

; i < pattern_char.size(); i++) }}

if (string.valueof(tmp).equals(pattern))

}// system.out

.println("--------------result-------------");

return result;

}

890 查詢和替換模式

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

890 查詢和替換模式

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

890 查詢和替換模式

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