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.
Examples:
- 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.
class Solution {
public:
bool wordPattern(string pattern, string str) {
map<char, string>trans;
set<string>hist;
for (int i = 0; i < pattern.size() - 1; i++)
{
int pos = str.find(' ');
if (pos == string::npos)
return false;
string s = string(str.begin(), str.begin() + pos);
if (trans.find(pattern[i]) == trans.end())
{
if (hist.find(s) != hist.end())
return false;
hist.insert(s);
trans[pattern[i]] = s;
}
else
{
if (trans[pattern[i]] != s)
return false;
}
str.erase(0, pos + 1);
}
if (trans.find(pattern.back()) == trans.end())
{
if (hist.find(str) != hist.end())
return false;
}
else
{
if (trans[pattern.back()] != str)
return false;
}
return true;
}
};accept

本文探讨了如何通过一种特定模式来验证字符串是否遵循相同的模式,涉及字符映射、集合历史记录等关键概念。通过实例演示了在给定模式和字符串背景下进行模式匹配的方法。
715

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



