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.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | class Solution { public:     bool wordPattern(string pattern, string str) {         map<char, string> ptos;         map<string, char> stop;         int len = pattern.length();         string *s = new string [len];         int cnt = 0;         for(int i = 0; i < str.length(); i++) {             if(str[i] == ' ')                 cnt++;         }         if(cnt != len - 1) {             return false;         }         int t = 0;         for(int i = 0; i < str.length(); i++) {             if(str[i] != ' ') {                 s[t] += str[i];             } else {                 t++;             }         }         for(int i = 0; i < len; i++) {             if(ptos.find(pattern[i]) != ptos.end() && ptos[pattern[i]] != s[i]             || stop.find(s[i]) != stop.end() && stop[s[i]] != pattern[i])                 return false;             ptos[pattern[i]] = s[i];             stop[s[i]] = pattern[i];         }         return true;     } }; | 
❤ 点击这里 -> 订阅《PAT | 蓝桥 | LeetCode学习路径 & 刷题经验》by 柳婼
❤ 点击这里 -> 订阅《从放弃C语言到使用C++刷算法的简明教程》by 柳婼
❤ 点击这里 -> 订阅PAT甲级乙级、蓝桥杯、GPLT天梯赛、LeetCode题解离线版
