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 };

建立双向映射,只有当两边元素都没有建立映射关系时,才建立新的映射关系,否则就直接判定映射是否唯一,不唯一则报错。

posted on 2018-05-25 15:54  高数考了59  阅读(113)  评论(0)    收藏  举报