变量简洁正确完整思路
a->dog  b->cat,
jk找到str
如果c已经有但str不一样false
如果str已经有但c不一样false
更新两个哈希表
class Solution {
public:
    bool wordPattern(string pattern, string s) {
        unordered_map<char,string>char2string;
        unordered_map<string,char>string2char;
        int j=0,i=0;
        for(i=0;i<pattern.size();i++){
            int k=j;
            if(k>=s.size()){
                j=k;
                break;
            }
            while(k<s.size()&&s[k]!=' ')k++;
            string str=s.substr(j,k-j);
            char c=pattern[i];
            if(char2string.count(c)&&char2string[c]!=str||string2char.count(str)&&string2char[str]!=c)return false;
            char2string[c]=str;
            string2char[str]=c;
            j=k+1;
        }
        if(i<pattern.size()||j<s.size())return false;
        return true;
    }
};

用stringstream处理"dog cat cat dog"放到vector string
class Solution {
public:
    bool wordPattern(string pattern, string s) {
        stringstream ss(s);
        vector<string>strs;
        string str;
        while(ss>>str)strs.push_back(str);
        //for(auto a:strs)cout<<a<<' ';
        int n=pattern.size(),m=strs.size();
        if(n!=m)return false;
        unordered_map<char,string>c2s;
        unordered_map<string,char>s2c;
        for(int i=0;i<n;i++){
            char c=pattern[i];
            string str=strs[i];
            if(c2s.count(c)&&c2s[c]!=str||s2c.count(str)&&s2c[str]!=c)return false;
            c2s[c]=str;
            s2c[str]=c;
        }
        return true;
    }
};

 

posted on 2021-08-10 17:17  offer快到碗里来~  阅读(36)  评论(0)    收藏  举报