知识点
hash_map
hash_map 的遍历
代码
class Solution {
public:
bool wordPattern(string pattern, string s) {
//字符到单词的映射要唯一
//单词到字符的映射也要唯一
map<char, string> match;
map<string, char> match_str_char;
char patternChar;
int j = 0;
for(int i = 0; i<pattern.length(); i++){
string temp_str = "";
//如果pattern还没遍历结束,s已经遍历结束,则未匹配成功
if(j>= s.length()) return false;
else{
//提取字符串
while(j< s.length() && s[j] != ' '){
temp_str+= s[j];
j++;
}
if(s[j] == ' ') j++;
}
//如果未在字符到单词的映射中找到该字符
if(match.find(pattern[i]) == match.end()){
//添加映射
match[pattern[i]] = temp_str;
//如果在单词到字符的映射中未找到该字符,添加映射
if(match_str_char.find(temp_str) == match_str_char.end()) match_str_char[temp_str] = pattern[i];
//否则,若单词已经对应了其它字符,返回假
else if(match_str_char[temp_str] !=pattern[i]) return false;
}
//否则,若字符已经对应了其它单词,返回假
else if(match[pattern[i]] != temp_str) return false;
}
//如果字符已经遍历完成,单词还未完成,则返回假
if(j < s.length()) return false;
return true;
}
};