解题思路:采用栈解决。当括号为左括号时(,{,[,将字符存入栈;当括号为右括号时,),},],若栈顶元素与之匹配则pop出栈顶,不然返回false。遍历完字符串,栈为空返回true,不然返回false。注意,遍历过程中栈为空的情况。
import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
boolean flag=true;
Stack<Character> stack=new Stack<>();
if(s.length()!=0){
/*if(s.charAt(0)==')'||s.charAt(0)=='}'||s.charAt(0)==']'){
return false;
}*/
for(int i=0;i<s.length();i++){
switch(s.charAt(i)){
case '(':
stack.push('(');
break;
case '{':
stack.push('{');
break;
case '[':
stack.push('[');
break;
case ')':
if(!stack.empty()&&stack.peek()=='('){
stack.pop();
break;
}
else{
return false;
}
case '}':
if(!stack.empty()&&stack.peek()=='{'){
stack.pop();
break;
}
else{
return false;
}
case ']':
if(!stack.empty()&&stack.peek()=='['){
stack.pop();
break;
}
else{
return false;
}
default:
break;
}
}
}
return stack.empty();
}
}
京公网安备 11010502036488号