Fork me on GitHub

LeetCode-020-有效的括号

题目描述

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例

1
2
输入: "()"
输出: true

思路

利用栈压入,每次压入都检查栈顶和数组的第一个元素是否匹配,直至栈为空

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public boolean isValid(String s) {
Stack<Character> result = new Stack<Character>();
int n=s.length();
if(n==0){
return true;
}
for(int i=0;i<n;i++) {
if(result.empty()){
result.push(s.toCharArray()[i]);
} else if(result.peek()=='('&&s.toCharArray()[i]==')'|| result.peek()=='['&&s.toCharArray()[i]==']'|| result.peek()=='{'&&s.toCharArray()[i]=='}'){
result.pop();
} else{
result.push(s.toCharArray()[i]);
}
}
return result.empty();
}
}