LeetCode 20. 有效的括号
原题链接
简单
作者:
tiantian
,
2020-08-14 12:04:35
,
所有人可见
,
阅读 504
算法1
(暴力枚举) $O(n)$
- 当前为左括号时,入栈
- 当前为右括号时,栈顶元素为对应的左括号时,遍历下一个符号,否则输出false;
- 最后遍历完所有元素时,判断栈是否为空;
- 没有一遍过,因为没有判断当当前为右括号时,若栈是空的情况;加了特判;
时间复杂度
参考文献
java 代码
class Solution {
public boolean isValid(String s) {
if(s==null) return true;
LinkedList<Character> ml = new LinkedList<>();
int i = 0;
while(i<s.length()){
if(ml.isEmpty()) {ml.push(s.charAt(i++));}
else{
if(s.charAt(i)=='('||s.charAt(i)=='['||s.charAt(i)=='{') ml.push(s.charAt(i++));
else if(s.charAt(i)==')')
{
if(ml.peek()=='(') {ml.pop();i++;}
else return false;
}
else if(s.charAt(i)==']')
{
if(ml.peek()=='[') {ml.pop();i++;}
else return false;
}
else if(s.charAt(i)=='}')
{
if(ml.peek()=='{') {ml.pop();i++;}
else return false;
}
else;}
}
return ml.isEmpty();
}
}