class Solution {
public:
bool wordPattern(string pattern, string s) {
unordered_map<char, string> s2t;
unordered_map<string, char> t2s;
int len = pattern.size();
int CountSpace = 0;
int pos = 0;
for(int i = 0; i < s.size(); i++)
{
if(s[i] == ' ')
{
CountSpace++;
}
}
if(CountSpace != len - 1)
{
return false;
}
for(int i = 0; i < len; i++)
{
char x = pattern[i];
string y;
for(int j = pos; j < s.size(); j++)
{
if(s[j] == ' ')
{
pos++;
break;
}
y += s[j];
pos++;
}
if((s2t.count(x) && s2t[x] != y) || (t2s.count(y) && t2s[y] != x))
{
return false;
}
s2t[x] = y;
t2s[y] = x;
}
return true;
}
};
说白了,映射!映射!用的就是map库,这个代码我讲一下大致意思,就是把pattern里面的每一个字母映射到s中的字符串中。遍历map里面的每一个映射关系,如果在原来的基础上有映射到别的字符串的话,那就是错误。用个小故事来说吧,一对情侣只能双方交换信,要是发现对象给别人送信,那就是错误,要是一直都是互相并且只有两个人送信,那就是正确。