• 每日一题20201216(290. 单词规律)


    290. 单词规律

    image-20201216111049215

    思路

    首先要理解清楚题目的意思,就好像孙亚龙给卢本伟起外号一样,卢本伟的外号,大家都知道:五五开

    但是你不能明着叫,所以你用aab进行代替,这个题目可以说很符合这个场景了!所以现在要做的是,判断五五开是不是aab,判断aab是不是五五开。

    首先我们维护2个map, 一个存放a->五的映射关系, 一个存放五->a的映射关系。

    为什么需要2个map, 你想,adb->五五开, 这样的映射,你只存储了a->五,并没有存储五->a,所以adb->五五开也能通过,但这不符合题意。

    class Solution:
        def wordPattern(self, pattern: str, s: str) -> bool:
            # mp1: a -> wu
            mp1 = {}
            # mp2: wu -> a
            mp2 = {}
            # 切割字符串为数组
            b = s.split(" ")
            # 如果长度不一样 直接return False
            if len(pattern) != len(b):
                return False
            # 长度一样可以尽情zip
            for x, y in zip(pattern, b):
                # a -> wu 如果检测失败,直接return
                if mp1.get(x) is not None and mp1.get(x) != y:
                    return False
                # wu -> a 如果检测失败, 直接return
                if mp2.get(y) is not None and mp2.get(y) != x:
                    return False
                # 建立a->wu和wu->a的映射关系
                mp1[x] = y
                mp2[y] = x
            return True
    
    

    image-20201216111901380

    写完题解了,终于可以坐下了。
  • 相关阅读:
    mybatis入门-1
    try-with-resources 在捕获异常之后自动释放资源 try(){}
    mybatis配置logback
    使用原生的jdbc连接数据库进行查询
    java中的反射
    ajax实现搜索自动补全
    java IO-1 File 2019-07-24
    VMware历史版本
    Centos8.3-NIS
    用户管理
  • 原文地址:https://www.cnblogs.com/we8fans/p/14144498.html
Copyright © 2020-2023  润新知