Total Accepted: 21299
Total Submissions: 77656
Difficulty: 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.
Subscribe to see which companies asked this question
Hide Similar Problems
code:
class Solution {
public:
bool wordPattern(string pattern, string str) {
map<char, int> cmap;
map<string, int> smap;
int n = pattern.size();
istringstream in(str);
int i=0;
for(string word;in>>word;i++)
{
if(cmap[pattern[i]] != smap[word]) return false;
cmap[pattern[i]] = smap[word] = i+1;
}
return i==n;
}
};