Leetcode Word Pattern

来源:互联网 发布:亚信数据裁员风波 编辑:程序博客网 时间:2024/06/06 14:03

Leetcode Word Pattern ,本算法关键在于使用map进行双向映射,相关cpp代码如下:

#include<iostream>#include<vector>#include<map>#include<string>using namespace std;class solution {public:    bool wordpattern(string pattern, string str) {        // pattern to element reflection        map<char, string> patternmap;        // element to pattern reflection        map<string, char> elementmap;        vector<string> elements;        splitstring(elements, str);        if (elements.size() != pattern.length()) {            return false;        }        for (int i = 0; i < elements.size();  i ++) {            if (patternmap.find(pattern[i]) == patternmap.end() && \                    elementmap.find(elements[i]) == elementmap.end()) {                patternmap[pattern[i]] = elements[i];                elementmap[elements[i]] = pattern[i];            } else if (patternmap.find(pattern[i]) == patternmap.end() || \                   elementmap.find(elements[i]) == elementmap.end()) {                return false;            }            if (patternmap[pattern[i]] != elements[i]) {                return false;            }        }        return true;    }    void splitstring(vector<string> &ele, string str) {        int pre = 0;        int end = 0;        while (end < str.length()) {            if (str[end] == ' ') {                ele.push_back(str.substr(pre, end - pre));                pre = end + 1;            }            end ++;        }        if (pre != end) {            ele.push_back(str.substr(pre, end - pre));        }    }};int main(int argc, char* argv[]) {    Solution so;    bool re = so.wordPattern(argv[1], argv[2]);    cout<<"result: "<<re<<endl;    return 0;}
0 0
原创粉丝点击