LeetCode--020--括号匹配(java版)

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

有效字符串需满足:

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

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

示例 1:

输入: "()"
输出: true

示例 2:

输入: "()[]{}"
输出: true

示例 3:

输入: "(]"
输出: false

示例 4:

输入: "([)]"
输出: false

示例 5:

输入: "{[]}"
输出: true

low low的传统解法。。。

 1 class Solution {
 2     public boolean isValid(String s) {
 3         Stack<Character> stack = new Stack();
 4         for (int i = 0;i < s.length();i++){
 5             switch(s.charAt(i)){    
 6                 case '(':
 7                     stack.push('(');
 8                     break;
 9                 case '[':
10                     stack.push('[');
11                     break;
12                 case '{':
13                     stack.push('{');
14                     break;
15                 case ')':
16                     if(stack.empty()){
17                         return false;
18                     }else if(stack.pop() != '('){
19                         return false;
20                     }
21                     break;
22                 case ']':
23                     if(stack.empty()){
24                         return false;
25                     }else if(stack.pop() != '['){
26                         return false;
27                     }
28                     break;
29                 case '}':
30                     if(stack.empty()){
31                         return false;
32                     }else if(stack.pop() != '{'){
33                         return false;
34                     }
35                     break;    
36             }
37         }
38         if(!stack.empty()){
39             return false;
40         }
41         return true;
42     }
43 }

sth update

 1 class Solution {
 2     public boolean isValid(String s) {
 3         Stack<Character> stack = new Stack();
 4         for(Character ch : s.toCharArray()){
 5             if(ch=='{'){
 6                 stack.push('}');
 7             }else if(ch == '('){
 8                 stack.push(')');
 9             }else if(ch == '['){
10                 stack.push(']');
11             }else{
12                 if(stack.isEmpty() || stack.pop() != ch){
13                     return false;
14                 }
15             }
16         }
17         return stack.isEmpty();
18     }
19 }

2019-03-03 11:14:44

猜你喜欢

转载自www.cnblogs.com/NPC-assange/p/10464385.html