给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 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