此题为检查模式串和字符串是否匹配
算法思路如下:
1、将待检查字符串按照空格进行分割
2、检查分割后的长度和模式串长度是否一致
3、用两个字典检查遍历检查是否匹配,只要任何匹配失败则返回
代码如下:
class Solution {
public:
bool wordPattern(string pattern, string str) {
//将str做分割
vector<string > vstr;
int s=str.size();
int index=0;
int count=0;
for(int i=0;i<s;i++)
{
if(str[i]==' ')
{
string temp=str.substr(index,count);
vstr.push_back(temp);
index+=count;
index++;
count=0;
}
else
count++;
}
string temp=str.substr(index,count);
vstr.push_back(temp);
//检查长度是否一致
if(pattern.size()!=vstr.size())
return false;
//检查是否匹配
map<char,string> m;
map<string,char> mm;
for(int i=0;i<pattern.size();i++)
{
if(m.count(pattern[i])==0)
m[pattern[i]]=vstr[i];
else
{
if(m[pattern[i]]!=vstr[i])
return false;
}
if(mm.count(vstr[i])==0)
mm[vstr[i]]=pattern[i];
else
{
if(mm[vstr[i]]!=pattern[i])
return false;
}
}
return true;
}
};