题目描述
思路
看到这道题目下意识想到了hash_map,因为这种一一对应关系不就是hash_map的特长吗?
1)我一开始只想到了从patttern到str的映射,先将str使用模拟进行单词分割存储在vec<string>数组中间.
2)但是却忽略了eg:pattern="abba" str="dog dog dog dog dog"这样的情况,这要求我们不仅要建立从pattern到str的映射,还需要建立从str到pattern的映射!也就是说,要建立两次hash_map,但是逻辑基本上是一样的.
3)数据集中还有一个特别坑爹的地方:pattern=str="jquery" wtf....这种情况也是不合规矩的,我们可以理解为j->jquery ,但是q,u,e,r,y都对应为NULL,这是不可以的!
所以为了能够填补3)中的情况,我们需要在分割完str之后加一个判断逻辑----如果pattern.size()!=vec.size(),说明有的字符有映射,有的字符没有映射,那么直接返回false表示不允许即可!
#include<unordered_map>
#include<string>
#include<iostream>
using namespace std;
class Solution {
public:
bool wordPattern(string pattern, string s) {
int flag = 0;
for (int i = 0; i < pattern.size(); ++i) {