LeetCode - Word Pattern

来源:互联网 发布:大数据会计信息化 编辑:程序博客网 时间:2024/06/06 18:57

Question

Link : https://leetcode.com/problems/word-pattern/

Given a pattern and a string str, find if str follows the same pattern.

Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str.

Examples:

pattern = “abba”, str = “dog cat cat dog” should return true.
pattern = “abba”, str = “dog cat cat fish” should return false.
pattern = “aaaa”, str = “dog cat cat dog” should return false.
pattern = “abba”, str = “dog dog dog dog” should return false.

Notes:
You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.

Code

额,感觉是一个很常规的实现。(C++ : 0ms..这个可能是用例太少,通过用时比较少)

class Solution {public:    bool wordPattern(string pattern, string str) {        string temp;        vector<string> slist;        stringstream ss(str);        while(ss >> temp) slist.push_back(temp);        if(slist.size() != pattern.size()) return false;        map<char, string> stable;        map<char, string>::iterator it;        map<string, bool> wtable;        map<string, bool>::iterator wit;        for(int i = 0; i < pattern.size(); i++){            it = stable.find(pattern[i]);            if(it != stable.end()){                if(slist[i].compare(it->second) != 0)                    return false;            }            else{                wit = wtable.find(slist[i]);                if(wit != wtable.end())                     return false;                wtable.insert(pair<string, bool>(slist[i], true));                stable.insert(pair<char, string>(pattern[i], slist[i]));            }        }        return true;    }};
1 0
原创粉丝点击