问题描述
有效字符串需满足:
左括号必须用相同类型的右括号闭合。包括:“( )”,“[ ]”,“{ }”。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
// 括号匹配问题
public static boolean isMatch(String str){
Stack<Character> stack = new Stack();
for (int i = 0, len =str.length(); i<len;i++){
char ch = str.charAt(i);
if (ch == '{' || ch == '[' || ch == '(' ){
stack.push(ch);
}
if (ch == '}' || ch == ']' || ch == ')' ){
if (stack.isEmpty()){
return false;
}
// 如果栈顶元素和下一个右括号相匹配,则将其栈顶元素出栈
if ((stack.peek() == '(' && ch == ')')
|| (stack.peek() == '[' && ch == ']')
|| (stack.peek() == '{' && ch == '}') ) {
stack.pop();
}
}
}
return stack.isEmpty();
}
网友评论