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.
class Solution {public: bool wordPattern(string pattern, string str) { map<char, string> m; map<string, char> m1; istringstream ss(str); string word; int i = 0; while(ss >> word){ if(m.count(pattern[i]) != 0){ if(word != m[pattern[i]]) return false; } else m[pattern[i]] = word; if(m1.count(word) != 0){ if(pattern[i] != m1[word]) return false; } else m1[word] = pattern[i]; ++i; } if(i != pattern.length()) return false; return true; }};新闻热点
疑难解答