290. 单词模式

https://leetcode-cn.com/problems/word-pattern/

解法一:

类似于205.同构字符串,用两个hash表,每次给对应的pattern和str一个唯一的数字标识,一旦数字对不上,说明匹配失败。

pattern是字符串,可以用数字代替hashmap。每个字符的asc码作为键值,作为256长度的数组中的下标,值为数字标识。

str是多个串,按空格split之后存在一个list中,由于串长度不一定为1,不方便再像上面那样用数组表示,因此用一个map,键为字符串,值为数字标识。

class Solution:
    def wordPattern(self, pattern: str, str: str) -> bool:
        strList = str.split(' ')
        if len(pattern) != len(strList):    #避免数量不匹配的case
            return False
        dict_p = [-1] * 256
        dict_s = {}
        for i in range(len(pattern)):
            if dict_p[ord(pattern[i])] == -1:
                dict_p[ord(pattern[i])] = i
            if strList[i] not in dict_s:
                dict_s[strList[i]] = i
            if dict_p[ord(pattern[i])] != dict_s[strList[i]]:
                return False
        return True

最后更新于