一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第8天,点击查看活动详情
测试岗位也越来卷了,除了基本的功能测试外,还要有编程基础、脚本经验才脱颖而出。
怎么才能提高我们的编程能力呢,刷LeetCode是最佳的途径之一,话不多数,刷题走起~
一、题目描述:
-
题目内容
-
题目示例
-
题目解析
1 <= s.length <= 5 * 104t.length == s.lengths和t由任意有效的 ASCII 字符组成
二、思路分析:
我们拿到本题时,想到了之前也刷到过类似的290.单词规律。我们巩固一下重温解答该题的思路。
如何判断两个字符串,是否是相同的匹配模式?
- 脑袋会立马地想到映射,使用哈希表来建立对应关系。
- 在python中,建立映射关系的就是数据类型就是字典。
因此,解答该题前,我们要使用临时的字典来帮我们创建key-value关系。
首先,该题存在两种情况需要判断:
-
当字符串s和字符串t长度不相等时,不管什么模式都不满足,直接返回False
-
当字符串s和字符串t长度相等时,则要进行三种情况判断:
- key值相同,value值不相同。如"aaaaa","abcde"
- key值不同,value值相同。如"abcde","aaaaa"
- key值与value值一一对应
因此,我们需要定义两个字典来分别判断key与value值不对应的情况。
- s[i]作为key值,t[i]作为value值
- t[i]作为key值,s[i]作为value值
手动梳理一下,演示思路如下列图所示:
根据上图思路,我们使用python可以快速实现,代码如下:
class Solution(object):
def isIsomorphic(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
if len(s) != len(t):
return False
st_dict = {}
ts_dict ={}
for i in range(len(s)):
if s[i] in st_dict.keys() and st_dict[s[i]] != t[i]:
return False
if t[i] in ts_dict.keys() and ts_dict[t[i]] != s[i]:
return False
st_dict[s[i]] = t[i]
ts_dict[t[i]] = s[i]
return True
三、总结:
本题考察的哈希表,key-value关系的判断。后续遇到需要映射关系时,可以考虑此方法。
时间复杂度O(N),空间复杂度O(∣Σ∣),其中Σ 是字符串的字符集
以上是本期内容,欢迎大佬们点赞评论,下次见~~~