当前位置:网站首页>890. 查找和替换模式

890. 查找和替换模式

2022-06-12 10:34:00 anieoo

原题链接:890. 查找和替换模式

 

Solution:

         利用两个数组,在遍历字符串的时候,words[i]存储单词到模式串的映射,pattern[i]存储模式串到单词的映射。

class Solution {
public:
    vector<string> findAndReplacePattern(vector<string>& words, string pattern) {
        int n = words.size();
        vector<string> res; //返回值
        for(int i = 0;i < n;i++) {
            if(check(words[i], pattern)) res.push_back(words[i]);
        }
        return res;
    }

    bool check(const string &str,const string &patt) {
        int words[26],pattern[26];
        memset(words, -1, sizeof(words));
        memset(pattern, -1, sizeof(pattern));
        
        for(int i = 0;i < str.size();i++) {
            int st = str[i] - 'a';
            int ts = patt[i] - 'a';
            
            if(words[st] == -1 && pattern[ts] == -1) {  //如果字母还没映射,储存字母间的映射关系
                words[st] = ts;
                pattern[ts] = st;   
            }
            else if(words[st] != ts || pattern[ts] != st) {  //判断映射关系是否正确
                return false;
            } 
        }
        return true;
    }
};
原网站

版权声明
本文为[anieoo]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_42174306/article/details/125242524