aboutsummaryrefslogtreecommitdiff
path: root/other/word_pattern.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'other/word_pattern.cpp')
-rw-r--r--other/word_pattern.cpp25
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
+}