Leetcode 290. Word Pattern (Easy) (cpp)
Tag: Hash Table
Difficulty: Easy
/*
290. Word Pattern (Easy)
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) {
unordered_map<char,int> mappingchar;
unordered_map<string,int> mappingstr;
string strs;
int index = 0;
istringstream in(str);
while(in>>strs){
if(index < pattern.length()){
if(mappingchar[pattern[index]]!=mappingstr[strs]) {
return false;
}
mappingchar[pattern[index]] = mappingstr[strs] = index + 1;
}
index++;
}
return index == pattern.length();
}
};