给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
根据题目要求,就是要有对应的右括号,‘{[]}’这种也是符合要求的,‘()【】{}’这是符合要求的。也就是说左括号要有相邻的右括号对应就可以。
public static boolean isValid(String s) {
//这里定义了一个栈,栈是矢量的一个子类,它实现了一个标准的先进后出的栈
Stack<Character> stack = new Stack<Character>();
//将字符串转成char数组,循环遍历
for(char c: s.toCharArray()){
//将数组取出的值与对应的括号比较,如果右括号存在把对应左括号放入栈中,
// 如果出现的是左括号,栈中不会存在值,直接返回
//stack.push 把值放入到栈的最顶部
if(c=='('){
stack.push(')');
}else if(c=='['){
stack.push(']');
}else if(c=='{'){
stack.push('}');
}else if(stack.isEmpty()||c!=stack.pop()){
//stack.pop()取栈中最顶部的值
return false;
}
}
return stack.isEmpty();
}