leetcode 290 Word Pattern(map的应用)
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:
- pattern =
"abba", str ="dog cat cat dog"should return true. - pattern =
"abba", str ="dog cat cat fish"should return false. - pattern =
"aaaa", str ="dog cat cat dog"should return false. - pattern =
"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; } } };

浙公网安备 33010602011771号