遇到这道题一开始的思路就是使用栈的先进后出;
不过看到一个简洁的代码是直接匹配括号,然后删除一对括号,如果符合,最后字符串为空;
不过后者时间复杂度和空间复杂度不好,因为需要不断调用api。
题目描述
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例1:
输入: “()”
输出: true
示例2:
输入: “(]”
输出: false
代码(简洁的)
(没啥可说的)
class Solution {
public boolean isValid(String s) {
while( s.indexOf("{}") != -1 || s.indexOf("[]") != -1 || s.indexOf("()") != -1 ) {
s = s.replace("{}", "");
s = s.replace("[]", "");
s = s.replace("()", "");
}
return s.isEmpty();
}
}
本文内容只适用于个人,方便以后回看学习。