你有乙個單詞列表 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 之後,我們就得到了所需的單詞,那麼單詞與模式是匹配的。回想一下,字母的排列是從字母到字母的雙射 每個字母對映到另乙個字母,...