题目:
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.
给定一个模式跟一个字串,判断字串是否遵循格式
ex:input: pattern = "abba",s = "dog cat cat dog"=>output: true
input: pattern = "abba", s = "dog cat cat fish"=>output: false
这题感觉解法上很像205.
都是建立hash map判断两字串元素是否为一对一关係
不过这次的关係会是字元对应到词
class Solution: def wordPattern(self, pattern: str, s: str) -> bool: s=s.split(' ') if len(s)!=len(pattern): return False d={} for i in range(len(pattern)): if pattern[i] not in d: if s[i] in d.values(): return False else: d[pattern[i]]=s[i] else: if d[pattern[i]]!=s[i]: return False return True
pattern表模式,而split字串s让其变为词语阵列,设dictionary为d存放对应关係
假如pattern和s长度不同就直接return False
毕竟长度不同怎么可能对应得到pattern
从头开始存放关係(pattern[i]是key,s[i]是value),会出现以下几种可能
**(1)pattern[i]不存在key中且s[i]不存在value中:**发现新对应关係,纪录
**(2)pattern[i]不存在key中但s[i]存在value中:**发现非一对一关係,return False
**(3)pattern[i]存在key中且对应值和s[i]相同:**发现重複的关係而已,无视
**(4)pattern[i]存在key中但对应值和s[i]不同:**发现非一对一关係,return False
若纪录完都没发现非一对一关係就return True
没错这题解法真的很像很像205.
最后执行时间28ms(faster than 96.83%)
那我们下题见