【LeetCode】290. 单词规律

114 阅读2分钟

image.png

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

测试岗位也越来卷了,除了基本的功能测试外,还要有编程基础、脚本经验才脱颖而出。

怎么才能提高我们的编程能力呢,刷LeetCode是最佳的途径之一,话不多数,刷题走起~

一、题目描述:

  • 题目内容

image.png

  • 题目示例

image.png

  • 题目解析

    • 本题给出一个pattern和一个字符串s
    • pattern是匹配模式,s是🈶️空格分隔的多个单词组成
    • 本题要求s字符串形式与pattern字符串模式完成匹配

二、思路分析:

我们拿到本题,要求我们模拟匹配一串单词与pattern的模式一致,那么pattern与S字符串每个单词存在映射关系,则需要借助字典存储pattern字符与s字符串单词的映射关系。解决本题思路就有了。

  • 将s字符串,通过split(" ")以空格的形式分隔,存储在列表s_list中
  • 先判断s_list 与 pattern 长度不一样时,则return False
  • for循环以patten[i]作为字典key,s_list[i]作为value储存在tmp字典中
  • 当pattern[i]存在tmp.keys(),并且tmp[pattern[i]] != s_list[i]是,则返回false
  • 我们还要考虑当pattern[i] 不一样,但是value一样时,也是要返回false的

image.png

image.png

如上图所示,我们使用python代码来实现:

class Solution(object):
    def wordPattern(self, pattern, s):
        """
        :type pattern: str
        :type s: str
        :rtype: bool
        """
        s_list = s.split(" ")

        if len(pattern) != len(s_list):
            return False
        
        pattern_tmp = {}

        for i in range(len(pattern)):

            if pattern[i] in pattern_tmp.keys() and pattern_tmp[pattern[i]] != s_list[i]:
                return False
            
            pattern_tmp[pattern[i]] = s_list[i]

        if len(pattern_tmp.keys()) != len(set(pattern_tmp.values())):
            return False
        return True

三、总结:

本题使用哈希表来辅助我们解决问题,AC提交记录如下:

image.png

为了提高运行时间,我们可以再定义一个字典,来存储tmp[s_list[i]] = pattern[i]解决不同key,value一样的场景。

以上是本期内容,欢迎大佬们点赞评论,下期见~~~