给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"输出: true
示例 2:
输入: "()[]{}"输出: true
示例 3:
输入: "(]"输出: false
示例 4:
输入: "([)]"输出: false
示例 5:
输入: "{[]}"输出: true
low low的传统解法。。。
1 class Solution { 2 public boolean isValid(String s) { 3 Stackstack = 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 Stackstack = 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