题目地址:
https://www.lintcode.com/problem/matching-of-parentheses/description
给定一个长 n n n的小括号序列,判断其是否合法。
括号序列合法的充要条件是,任意前缀中左括号数量一定大于等于右括号数量,并且整个序列左右括号数量相等。代码如下:
public class Solution {
/**
* @param string: A string
* @return: whether the string is a valid parentheses
*/
public boolean matchParentheses(String string) {
// write your code here
if (string.length() % 2 != 0) {
return false;
}
int l = 0, r = 0;
for (int i = 0; i < string.length(); i++) {
if (string.charAt(i) == '(') {
l++;
} else {
r++;
}
if (l < r) {
return false;
}
}
return l == r;
}
}
时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)。