LeetCode 290. 单词规律 (Word Pattern)[简单]

lework · 2020年05月19日 · 最后由 lework 回复于 2020年05月19日 · 100 次阅读

给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。

这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。

示例 1:

输入: pattern = "abba", str = "dog cat cat dog"
输出: true

示例 2:

输入:pattern = "abba", str = "dog cat cat fish"
输出: false

示例 3:

输入: pattern = "aaaa", str = "dog cat cat dog"
输出: false

示例 4:

输入: pattern = "abba", str = "dog dog dog dog"
输出: false

说明: 你可以假设 pattern 只包含小写字母, str 包含了由单个空格分隔的小写字母。    

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/word-pattern 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution:
    def wordPattern(self, pattern: str, str: str) -> bool:
        # 分别构建pattern->str和str->pattern的哈希映射表; 2.仅当key值不在字典时对字典做添加; 3.然后根据映射表规则生成新的pattern和str,并且和原来的比较,当且仅当两者都为True时,结果才为True. 
        str1 = str.split(" ")
        dic_a=dict()
        dic_b=dict()
        if len(pattern)!=len(str1):
            return(False)
        else:
            for i in range (len(str1)):
                if str1[i] not in dic_a:
                    dic_a[str1[i]]=pattern[i]
                if pattern[i] not in dic_b:
                    dic_b[pattern[i]]=str1[i]
        print(dic_a,dic_b)
        return("".join([dic_a[i]for i in str1]) == pattern and "".join([dic_b[i]for i in pattern]) == str.replace(" ","") )
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册