Solution:
Use double hash maps to build up one-to-one relationship.
Code:
class Solution {
public:
bool wordPattern(string pattern, string str) {
vector<string> v(26, "");
unordered_map<string, char> m;
int i = 0, j = 0, l1 = pattern.size(), l2 = str.size();
for(; i<l1 && j<l2; ++i){
while(j<l2 && str[j] == ' ') ++j;
int t = j;
while(t<l2&&str[t] != ' ') ++t;
string s = str.substr(j, t-j);
if(v[pattern[i]-'a'] == "" && m.find(s) == m.end()){
v[pattern[i]-'a'] = s;
m[s] = pattern[i];
}
else{
if(v[pattern[i]-'a'] != s || m[s] != pattern[i]) return false;
}
j = t;
}
return i == l1 && j == l2;
}
};
No comments :
Post a Comment