题目
给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。
这个题用一个哈希表和一个set就可以解决
//将字符串分隔开
vector<string> ReturnString(string s) {
vector<string> ans;
int start = 0;
for (int i = 0; i < s.size(); i++) {
if (s[i] == ' ') {
ans.push_back(s.substr(start, i - start));
start = i + 1;
}
if (i == s.size() - 1) {
ans.push_back(s.substr(start, i - start + 1));
}
}
return ans;
}
bool wordPattern(string pattern, string s) {
vector<string> strs = ReturnString(s);
map<char, string> hash;
set<string> ishavestr;
if (s.size() != pattern.size()) {
return false;
}
for (int i = 0; i < strs.size(); i++) {
//哈希负责对应关系,set负责去重
if (!hash.count(pattern[i]) && !ishavestr.count(strs[i])) {
hash[pattern[i]] = strs[i];
ishavestr.insert(strs[i]);
}
else if (hash[pattern[i]] != strs[i]) {
return false;
}
}
return true;
}
希望我所写的对大家有帮助