python算法之单词模式匹配

本文探讨了如何在Python中实现单词模式匹配算法。通过建立哈希表`hash`和`used`,确保模式字符串中的每个字符只对应目标字符串的一个单词,并避免多个模式对应同一单词。在遍历过程中,检查字符的映射关系一致性,以及单词是否已被其他模式使用,以此判断匹配是否成功。
摘要由CSDN通过智能技术生成

单词模式匹配

首先给定两个字符串,一个是单词模式字符串,以恶是目标字符串。之后检查目标字符串是否为给定的单词模式,即求目标字符串中单词出现的规律是否符合单词模式字符串中的规律。

例如:单词模式字符串为“一二二一”,目标字符串为“苹果 香蕉 香蕉 苹果”,二者的规律一样,匹配成功。

首先建立哈希表来存储数据,由于不仅需要排除一个模式对应多个字符串的情况,还需要排除多个模式对应一个字符的情况,我们需要建立两个哈希表:hash和used。

hash用来存储模式字符串和目标字符串的对应关系,used记录目前已经使用的字符串。
首先解决第一个问题,就是模式字符串中每个字符只能对应目标字符串一个单词的问题。我们每次拿到模式字符串中的一个字符串的时候,需要检查一下 它是否已经被记录过映射关系,如果出现过就要检查之前的映射关系和这次的单词是否一致,如果不一致则返回不成立。如果是第一次出现,那就把它存储在hash哈希表中。

第二个问题。当模式字符串中的某个字符第一次出现时,还需要判断这个单词是否已经和其他的模式字符绑定,这时需要用到used哈希表。每当创建一种映射关系的时候,都需要在used中保存,同时还要检查这个单词是否已经使用过。

源代码:

def wordPattern(pattern,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

黎明之道

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

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

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

打赏作者

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

抵扣说明:

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

余额充值