Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
测试岗位也越来卷了,除了基本的功能测试外,还要有编程基础、脚本经验才脱颖而出。
怎么才能提高我们的编程能力呢,刷LeetCode是最佳的途径之一,话不多数,刷题走起~
一、题目描述:
-
题目内容
-
题目示例
-
题目解析
- 本题给出一个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的
如上图所示,我们使用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提交记录如下:
为了提高运行时间,我们可以再定义一个字典,来存储tmp[s_list[i]] = pattern[i]解决不同key,value一样的场景。
以上是本期内容,欢迎大佬们点赞评论,下期见~~~