题目考察的知识点:字符串分割
题目解答方法的文字分析:先将字符串plan分割,然后用map,一个字符对应一个字符串,如果不同就返回false。
本题解析所用的编程语言
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pattern string字符串 * @param plan string字符串 * @return bool布尔型 */ vector<string> stringtok(string plan) { vector<string> v; char* str = new char[plan.size() + 1]; strcpy(str, plan.c_str()); char* pch = strtok(str, " ");; while (pch != NULL) { v.push_back(string(pch)); pch = strtok(NULL, " "); } return v; } bool isValidPattern(string pattern, string plan) { // write code here vector<string> v = stringtok(plan); if (pattern.size() != v.size()) return false; map<char, string> map; for (int i = 0; i < v.size(); ++i) { auto it = map.find(pattern[i]); if (it == map.end()) map.insert(pair(pattern[i], v[i])); else if (it->second != v[i]) return false; } return true; } };