leetcode 290. Word Pattern
普通的做法就是两个哈希。
这里用了一点小技巧,比如a和b双射,不相互保存,而是都保存一个数字,之后每次增加映射,数字都增加1。
节省空间用。
bool wordPattern(string pattern, string str) { unordered_map<char, char> p; unordered_map<string, char> s; str = ' ' + str + ' '; char add = 0; string now = ""; int index = 0; for (int i = 0; i < pattern.size(); i++) { index++; now.clear(); while (index < str.size() && str[index] != ' ') now.push_back(str[index++]); if (now.empty() && i != pattern.size() - 1) return false; char temp = pattern[i]; if (s[now] == 0 && p[temp] == 0) { s[now] = ++add; p[temp] = add; } else { if (s[now] != p[temp]) return false; } } if (index != str.size() - 1) return false; return true; }
【本文章出自博客园willaty,转载请注明作者出处,误差欢迎指出~】