diff options
Diffstat (limited to 'other/word_pattern.cpp')
-rw-r--r-- | other/word_pattern.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/other/word_pattern.cpp b/other/word_pattern.cpp new file mode 100644 index 0000000..26ccbfd --- /dev/null +++ b/other/word_pattern.cpp @@ -0,0 +1,25 @@ +#include "leetcode.h" + +class Solution { +public: + bool wordPattern(string pattern, string s) { + vector<int> patMap(26, 0); + unordered_map<string, int> strMap; + int i = 0, n = pattern.size(); + istringstream ss(s); + string token; + for (string token; ss >> token; ++i) { + if (i == n || patMap[pattern[i] - 'a'] != strMap[token]) + return false; + patMap[pattern[i] - 'a'] = strMap[token] = i + 1; + } + return i == n; + } +}; + +int main() { + Solution obj; + testBool(obj.wordPattern("abba", "dog cat cat dog")); // true + testBool(obj.wordPattern("abba", "dog cat cat fish")); // false + testBool(obj.wordPattern("aaaa", "dog cat cat dog")); // false +} |