leetcode290:单词模式

思想:

题目要求给定一种 pattern(模式) 和一个字符串 str ,判断 str 是否遵循相同的模式。

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

1.首先判断pattern和str.split(" ")长度是否一致,若一致则跳转2,反之返回False

2.其次先通过str.split(" ")将字符串str转换成列表形式['dog', 'cat', 'cat','dog'],然后用set()函数将其转换成无重复元素的字典形式{‘dog’,'cat'},再计算长度

3.zip(a,b)分别从a和b中取一个元素组成一个元组,再次将组成的元组组合成一个新的迭代器。用zip()函数将pattern 和str.split(" ")组合成[(a,'dog'),(b,'cat'),(b,'cat'),(a,'dog')],接着用set()并计算长度

4.最后若三个长度都相等,则返回True 。反之返回False

class Solution:
    def wordPattern(self, pattern, str):
        """
        :type pattern: str
        :type str: str
        :rtype: bool
        """
        if len(pattern)!=len(str.split(" ")):
            return False
        a=set(str.split(" "))
        b=set(zip(pattern,str.split(" ")))
        return len(set(pattern))==len(a)==len(b)

猜你喜欢

转载自blog.csdn.net/weixin_43160613/article/details/83902997
今日推荐