题目考察的知识点:字符串分割

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