知识点

哈希表

思路

把plan按照空格分割成字符串数组a.

如果两个字符串不一样长,则是不可以的。从左到右依次匹配s的字母和a的字符串,同时用哈希表记录s的字母和a的字符串的对应关系,以及a的被占用的字符串。在匹配过程中出现矛盾则返回 False。

时间复杂度 O(n)

AC Code (Python)

from collections import defaultdict
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param pattern string字符串 
# @param plan string字符串 
# @return bool布尔型
#
class Solution:
    def isValidPattern(self , s: str, plan: str) -> bool:
        a = plan.split()
        if len(a) != len(s): return False
        d = defaultdict(str)
        seen = set()
        for i in range(len(a)):
            if s[i] in d.keys():
                if d[s[i]] != a[i]: return False
                continue
            if a[i] in seen: return False
            seen.add(a[i])
            d[s[i]] = a[i]
        return True