题目:已知一个字符串都是由左括号(和右括号)组成,判断该字符串是否是有效的括号组合。
例子:
()()() 返回true
())() false
根据观察
遍历的过程中,当右括号数大于左括号数,直接返回false
遍历结束时 :1.当左括号数等于右括号数 返回true
2.当左括号数大于右括号数 返回false
方法一 定义一个变量记录遍历过程
int count 当遇到左括号数count++ 当遇到右括号数 count–
在遍历时,只要count<0 时, 直接返回false
遍历结束后 count == 0 返回true . 否者左括号数不等右括号数(即返回false)
代码如下
public static boolean isValid(String s) {
if (s == null || s.length() == 0) return true;
int count = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
count++;
} else if (s.charAt(i) == ')' && --count < 0