890. Find and Replace Pattern

問題傳送門

分析

我們只用模擬匹配替換過程即可,需要注意的是我們在匹配過程中需要使用兩個map,來保證A -> BB ->A的一致性。

代碼

class Solution {
public:
    vector<string> findAndReplacePattern(vector<string>& words, string pattern) {
        vector<string> result;
        for(auto word : words){
            int i;
            unordered_map<char, char> p2wmaps, w2pmaps;
            if(word.size() != pattern.size())
                continue;
            for(i = 0; i < pattern.size(); i++){
                if(p2wmaps.count(pattern[i])){
                    if(p2wmaps[pattern[i]] != word[i])
                        break;
                }
                else{
                    if(w2pmaps.count(word[i]))
                        break;
                    p2wmaps[pattern[i]] = word[i];
                    w2pmaps[word[i]] = pattern[i];
                }
            }
            if(i == pattern.size())
                result.push_back(word);
        }
        return result;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章