单词模式匹配
首先给定两个字符串,一个是单词模式字符串,以恶是目标字符串。之后检查目标字符串是否为给定的单词模式,即求目标字符串中单词出现的规律是否符合单词模式字符串中的规律。
例如:单词模式字符串为“一二二一”,目标字符串为“苹果 香蕉 香蕉 苹果”,二者的规律一样,匹配成功。
首先建立哈希表来存储数据,由于不仅需要排除一个模式对应多个字符串的情况,还需要排除多个模式对应一个字符的情况,我们需要建立两个哈希表:hash和used。
hash用来存储模式字符串和目标字符串的对应关系,used记录目前已经使用的字符串。
首先解决第一个问题,就是模式字符串中每个字符只能对应目标字符串一个单词的问题。我们每次拿到模式字符串中的一个字符串的时候,需要检查一下 它是否已经被记录过映射关系,如果出现过就要检查之前的映射关系和这次的单词是否一致,如果不一致则返回不成立。如果是第一次出现,那就把它存储在hash哈希表中。
第二个问题。当模式字符串中的某个字符第一次出现时,还需要判断这个单词是否已经和其他的模式字符绑定,这时需要用到used哈希表。每当创建一种映射关系的时候,都需要在used中保存,同时还要检查这个单词是否已经使用过。
源代码:
def wordPattern(pattern,