1 static int wing=[]() 2 { 3 std::ios::sync_with_stdio(false); 4 cin.tie(NULL); 5 return 0; 6 }(); 7 8 class Solution 9 { 10 public: 11 bool wordPattern(string pattern, string str) 12 { 13 istringstream strcin(str); 14 string s; 15 vector<string> vs; 16 while(strcin>>s) 17 vs.push_back(s); 18 if(pattern.size()!=vs.size()) 19 return false; 20 map<string,char> s2c; 21 map<char,string> c2s; 22 int sz=vs.size(); 23 for(int i=0;i<sz;++i) 24 { 25 if(s2c[vs[i]]==0&&c2s[pattern[i]]=="") 26 { 27 s2c[vs[i]]=pattern[i]; 28 c2s[pattern[i]]=vs[i]; 29 continue; 30 } 31 if(s2c[vs[i]]!=pattern[i]) 32 return false; 33 } 34 return true; 35 } 36 };
建立双向映射,只有当两边元素都没有建立映射关系时,才建立新的映射关系,否则就直接判定映射是否唯一,不唯一则报错。
浙公网安备 33010602011771号