[LeetCode]290. Word Pattern

来源:互联网 发布:化工专业英语翻译软件 编辑:程序博客网 时间:2024/06/05 18:03

[LeetCode]290. Word Pattern

题目描述

这里写图片描述

思路

对str 分割字符串
然后字母对应的字符串存hash
不匹配返回false
若匹配,还需检测hash中的value是否有重复

代码

#include <iostream>#include <string>#include <vector>#include <unordered_map>using namespace std;class Solution {public:    vector<string> split(string str, char ch) {        vector<string> res;        string temp = "";        for (char p : str) {            if (p != ch)                temp += p;            else {                res.push_back(temp);                temp = "";            }        }        res.push_back(temp);        return res;    }    bool wordPattern(string pattern, string str) {        vector<string> strArr = split(str, ' ');        if (pattern.size() != strArr.size())            return false;        unordered_map<char, string> m;        for (int i = 0; i < pattern.size(); ++i) {            if (m.count(pattern[i])) {                if (m[pattern[i]] != strArr[i])                    return false;            }            else                m[pattern[i]] = strArr[i];        }        unordered_map<string, int> counts;        for (auto p : m) {            ++counts[p.second];        }        return m.size() == counts.size();    }};int main() {    string pattern = "abba", str = "aa aa aa aa";    Solution s;    cout << s.wordPattern(pattern, str) << endl;    system("pause");    return 0;}
0 0
原创粉丝点击