
变量简洁正确完整思路 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; } };
                    
                
                
            
        
浙公网安备 33010602011771号