290. 单词规律
题目链接:290. 单词规律
代码如下:
cpp
class Solution {
public:
bool wordPattern(string pattern, string s) {
unordered_map<char,string> um;
vector<string> strs;
string str="";
//把字符串中单词都保存到集合中
for(int i=0;i<s.size();i++)
{
if(s[i]==' ')
{
strs.push_back(str);
str="";
}
else
{
str+=s[i];
}
}
strs.push_back(str);
//二者长度不同直接返回即可
if(pattern.size()!=strs.size())
return false;
逐个对比
for(int i=0;i<pattern.size();i++)
{
//未找到的情况
if(um.find(pattern[i])==um.end())
{
看是否已于别的字母建立联系,是的话就直接返回,不满住一对一了
for(auto it=um.begin();it!=um.end();it++)
{
if(it->second==strs[i])
return false;
}
//插入
um[pattern[i]]=strs[i];
}
//不满足一对一直接返回
else if(strs[i]!=um[pattern[i]])
return false;
}
return true;
}
};