题目:
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:
1.左括号必须用相同类型的右括号闭合。
2.左括号必须以正确的顺序闭合。
3.注意空字符串可被认为是有效字符串
实现
import java.util.Stack;//java自带栈类
class Solution {
public boolean isValid(String s){
Stack<Character> stack=new Stack<>();//使用java的Stack类
for(int i=0;i<s.length();i++) {//*字符串.length()方法求长度
char c = s.charAt(i);//*字符串.charAt(index)。取出字符串中的第i个字符。
if (c == '(' || c == '{' || c == '[') {
stack.push(c);
}
else if (c == ')' || c == ']' || c == '}') {
if (stack.isEmpty())
return false;
//若栈为空,无法访问
char topChar=stack.pop();
if ((topChar == '[' && c == ']') || (topChar == '(' && c == ')') || (topChar == '{') && c == '}')
continue;
//如果此次匹配成功一对,进行下次匹配。continue跳过本次,break结束循环。
else
return false;
//此次匹配一对失败,则匹配失败
}
}
return stack.isEmpty();//**匹配完成后栈必须为空。容易被忽略。
}
}