Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
测试岗位也越来卷了,除了基本的功能测试外,还要有编程基础、脚本经验才脱颖而出。
怎么才能提高我们的编程能力呢,刷LeetCode是最佳的途径之一,话不多数,刷题走起~
一、题目描述:
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()" 输出:true
示例 2:
输入:s = "()[]{}" 输出:true
示例 3:
输入:s = "(]" 输出:false
示例 4:
输入:s = "([)]" 输出:false
示例 5:
输入:s = "{[]}" 输出:true
提示:
1 <= s.length <= 104
s 仅由括号 '()[]{}' 组成
二、思路分析:
作为一个测试编程小白来说,这题好简单阿,脑袋会了,手不会........
饶饶小脑袋,苦思冥想一番,想到的解决办法:
-
从长度判断:只要字符串长度是奇数,则结果直接返回False
-
判断括号有效:
-
使用字典:把成对的括号建立,映射关系key-value,例如")":"("。
-
使用栈的思想与列表结合:先进后出原则,遍历字符的字符。
-
当字符串字符不在dict.key()时,则会添加到list中
- 当字符串字符在dict.key()并且list不为空时,dict[key] 与list[-1]进行比较
-
-
根据以上思路,我们尝试写下如下代码如下所示:
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
Length = len(s)
brackets = {")":"(","]":"[","}":"{"}
stack = []
if Length % 2 !=0:
return False
for index in s:
if stack and index in brackets:
if stack[-1] == brackets[index]:
stack.pop()
else:
return False
else:
stack.append(index)
return True
if len(stuck) == 0:
return True
else:
return False
三、测试类编写:
作为测试人员,对于代码的正确性,我们要进行测试和检验的,最常见方法:等价类划分和边界值法。
按照题目要求,我们对测试数据进行如下划分:
提交代码,查看结果如下,AC掉一道基础题,(^-^)V
四、总结:
本题主要考察的是栈思维和映射关系的转换。当我们遇到类似的可以借鉴这个思维。
以上是本期内容,欢迎大佬们点赞评论,下期见~~