题目考察的知识点:字符串分割
题目解答方法的文字分析:先将字符串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;
}
};

京公网安备 11010502036488号