Given a pattern
and a string str
, find if str
follows the same pattern.
Here follow means a full match, such that there is a bijection between a letter in pattern
and a non-empty word in str
.
Examples:
"abba"
, str = "dog cat cat dog"
should return true."abba"
, str = "dog cat cat fish"
should return false."aaaa"
, str = "dog cat cat dog"
should return false."abba"
, str = "dog dog dog dog"
should return false.
Notes:
You may assume pattern
contains only lowercase letters, and str
contains lowercase letters separated by a single space.
题解:很简单,用两个map记录就可以。
class Solution { public: bool wordPattern(string pattern, string str) { int len_p=pattern.length(); int len_s=str.length(); vector<string>v(1); int id=0; for(int i=0;i<len_s;i++){ if(str[i]==‘ ‘){ id++; v.push_back(string()); } else{ v[id]+=str[i]; } } if(len_p!=(id+1)){ return false; } else{ map<char,string>mp; map<string,char>mp2; for(int i=0;i<len_p;i++){ if(mp.count(pattern[i])==0){ if(mp2.count(v[i])==0){ mp[pattern[i]]=v[i]; mp2[v[i]]=pattern[i]; } else{ return false; } } else{ if(mp[pattern[i]]!=v[i]){ return false; } } } return true; } } };
leetcode 290 Word Pattern(map的应用)
原文:http://www.cnblogs.com/zywscq/p/5223362.html