文章目录
- 一、题目
- 二、题解
一、题目
Given a pattern and a string s, find if s 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 s.
Example 1:
Input: pattern = “abba”, s = “dog cat cat dog”
Output: true
Example 2:
Input: pattern = “abba”, s = “dog cat cat fish”
Output: false
Example 3:
Input: pattern = “aaaa”, s = “dog cat cat dog”
Output: false
Constraints:
1 <= pattern.length <= 300
pattern contains only lower-case English letters.
1 <= s.length <= 3000
s contains only lowercase English letters and spaces ’ '.
s does not contain any leading or trailing spaces.
All the words in s are separated by a single space.
二、题解
判断一一对应:用两个哈希表
class Solution {
public:bool wordPattern(string pattern, string s) {unordered_map<char,string> map1;unordered_map<string,char> map2;istringstream iss(s);vector<string> tmp;string str;while(iss >> str) tmp.push_back(str);if(tmp.size() != pattern.size()) return false;for(int i = 0;i < pattern.size();i++){if(map1.find(pattern[i]) == map1.end()) map1[pattern[i]] = tmp[i];else{if(map1[pattern[i]] != tmp[i]) return false;}if(map2.find(tmp[i]) == map2.end()) map2[tmp[i]] = pattern[i];else {if(map2[tmp[i]] != pattern[i]) return false;}}return true;}
};