单词规律LeetCode290

这篇博客介绍了如何用哈希映射解决LeetCode第290题。作者首先提到使用hash_map处理单词一一对应关系,并通过例子解释了需要建立从pattern到str以及从str到pattern的双向映射。在处理数据集时,还特别注意了当pattern等于str时的特殊情况,需要检查所有字符是否都有映射。此外,博主还分享了在解决这个问题过程中复习的C++基础知识,包括头文件的使用、getline函数和getchar函数的作用。
摘要由CSDN通过智能技术生成

题目描述

 

思路 

看到这道题目下意识想到了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) {
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shallow_Carl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值