#include <iostream>
#include <vector>
#include <unordered_map>
#include <string>
using namespace std;
class Solution {
public:
bool wordPattern(
string pattern,
string str) {
vector<string> tmp;
int i=
0;
for(
int j=
0;i<str.size() && j<=str.size();j++)
if(str[j]==
' ' || j==str.size())
{
tmp.push_back(str.substr(i,j-i));
i=j+
1;
}
if(pattern.size()!=tmp.size())
return false;
unordered_map<char,int> mp;
unordered_map<string,int> ms;
i=
0;
for(;i<pattern.size();i++)
{
if(i!=
0 && mp[pattern[i]]!=ms[tmp[i]])
return false;
mp[pattern[i]]=i+
1;
ms[tmp[i]]=i+
1;
}
return mp[pattern[i-
1]]==ms[tmp[i-
1]];
}
};
int main()
{
Solution mys;
string pattern=
"aab";
string str=
"dog dog dog";
cout<<mys.wordPattern(pattern,str)<<endl;
return 0;
}