Word Pattern

来源:互联网 发布:藏族怎么看中国知乎 编辑:程序博客网 时间:2024/04/28 02:58

c++

class Solution {public:    bool wordPattern(string pattern, string str) {        if (pattern.empty() && str.empty())            return true;        if (pattern.empty() || str.empty())            return false;        map<char, string> dict;        set<string> cache;        vector<string> listStr = splitString(str);        if (pattern.size() != listStr.size())            return false;        for (size_t i = 0; i < pattern.size(); ++i) {            if (dict.find(pattern[i]) == dict.end()) {                dict[pattern[i]] = listStr[i];            }            else {                if (dict[pattern[i]] != listStr[i])                    return false;            }            cache.insert(listStr[i]);        }        if (cache.size() != dict.size())            return false;        return true;    }private:    vector<string> splitString(const string &str) {        string buf;        stringstream ss(str);        vector<string> tokens;        while (ss >> buf)            tokens.push_back(buf);        return tokens;    }};

python

class Solution(object):    def wordPattern(self, pattern, str):        """        :type pattern: str        :type str: str        :rtype: bool        """        pattern = list(pattern)        str = str.split(' ')        if len(pattern) != len(str):            return False        if len(set(pattern)) != len(set(str)):            return False        dict = {}        for i in xrange(len(pattern)):            if dict.get(pattern[i], 'N/A') == 'N/A':                dict[pattern[i]] = str[i]            else:                if dict[pattern[i]] != str[i]:                    return False        return True
0 0
原创粉丝点击