采用了栈的数据结构,通过栈顶元素与下一元素比较,能够匹配则栈顶元素出栈,否则新元素入栈,遍历字符数组后,若栈为空则返回true,否则为false。
import java.util.Stack;
class Solution {
public boolean isValid(String s) {
char[] sChar=s.toCharArray();
int sLength=sChar.length;
if(sLength%2==1)return false;
if(s.isEmpty())return true;
Stack<Character> sk = new Stack<Character>();
for(int i=0;i<s.length();i++){
if(sk.isEmpty()){
sk.push(sChar[i]);
continue;
}
if(!match(sk.peek(),sChar[i])){
sk.push(sChar[i]);
continue;
}
if(match(sk.peek(),sChar[i])){
sk.pop();
continue;
}
}
if(sk.isEmpty()){
return true;
}
return false;
}
public static boolean match(char c1,char c2){//构造字符匹配方法
switch(c1){
case '(':
if(c2==')')return true;
else return false;
case '[':
if(c2==']')return true;
else return false;
case '{':
if(c2=='}')return true;
else return false;
default:
return false;
}
}
}