有效的括号
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
代码如下:
按顺序读取字符串,每次读到左括号,就入栈一个对应的右括号,每次读到右括号就出栈栈顶的数进行对比,如果不同说明括号嵌套错误,
如果字符串还没走完,栈先空说明左括号少于右括号
如果字符串走完,栈还没空说明右括号少于左括号
public boolean isValid(String s) {
char[] arr = s.toCharArray();
Stack<Character> stack = new Stack<>();
for (int i = 0; i < arr.length; i++) {
if(arr[i] == '{'){
stack.push('}');
}else if(arr[i] == '['){
stack.push(']');
}else if(arr[i] == '('){
stack.push(')');
}else if(stack.empty() || arr[i] != stack.pop()){
return false;
}
}
return stack.empty()?true : false;
}