括号字符串是否合法
某个字符串只包括(
和)
,判断其中的括号是否匹配正确,比如(()())
正确,((())()
错误,不允许使用栈
。
这种类似题的常见思路是栈,对于左括号入栈,如果遇到右括号,判断此时栈顶是不是左括号,是则将其出栈,不是则该括号序列不合法。
面试官要求不能使用栈,可以使用计数器,利用int count
字段。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public static boolean checkBrackets(String str) { char[] cs = str.toCharArray(); int count = 0; for ( int i = 0; i < cs.length; i++) { if (cs[i] == ‘(‘) count++; else { count–; if ( count < 0) { return false; } } } return count == 0; } |