有效的括号
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 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;}