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.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.
题意:pattern串和str串匹配,一个字符对应一个字符串。
要注意匹配的时候pattern串和str串唯一。
class Solution {
public:
bool wordPattern(string pattern, string str) {
str += ' ';
map<string,char> mm; mm.clear();
bool opt[30];
memset(opt,false,sizeof(opt));
string s = ""; int j = 0;
for(int i=0; str[i]; i++)
{
if(str[i]==' ')
{
if( j == pattern.length()) return false;
if(opt[pattern[j]-'a'])
{
if(mm[s] == pattern[j]) j++;
else return false;
}
else
{
if(mm[s]) return false;
else mm[s] = pattern[j],opt[pattern[j]-'a'] = true, j++;
}
s = "";
}
else s += str[i];
}
if( j != pattern.length()) return false;
return true;
}
};
本文介绍了一种模式匹配算法,该算法用于判断一个给定的模式串和字符串是否能够完全匹配,即模式串中的每个字符是否能与字符串中的非空子串建立一一对应的映射关系。文章详细解释了实现思路,并提供了一个具体的C++代码示例。
1508

被折叠的 条评论
为什么被折叠?



