题目:
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"输出: true示例 2:
输入: "()[]{}"输出: true示例 3:
输入: "(]"输出: false示例 4:
输入: "([)]"输出: false示例 5:
输入: "{[]}"输出: true
代码:
1 import java.util.Stack;
2 class Solution {
3 public boolean isValid(String s) {
4 char[] brackets = s.toCharArray();
5 Stack<Character> save = new Stack<Character>();
6 int flag = 1;
7 for(int i = 0; i < brackets.length; i++){
8 switch(brackets[i]){
9 case '(':
10 case '{':
11 case '[':
12 save.push(brackets[i]);
13 break;
14 case ')':
15 if(!save.empty() && save.peek() == '(')
16 save.pop();
17 else flag = 0;
18 break;
19 case '}':
20 if(!save.empty() && save.peek() == '{')
21 save.pop();
22 else flag = 0;
23 break;
24 case ']':
25 if(!save.empty() && save.peek() == '[')
26 save.pop();
27 else flag = 0;
28 break;
29 }
30 }
31 if(save.empty() && flag == 1) return true;
32 else return false;
33 }
34 }
心得:
1、今天刚学了栈的理论,晚上回来尝试一下。
理论过程都能懂,就是java的语法不熟悉,上网搜了很多语法知识用上了,就过了。题目没有什么难度。
2、时间复杂度很高,以后再修改。