题目大意:
给定一个字符串,判定字符串是否是括号的有效组合。
如“(())”返回true;“)))((("返回false;
思路:
1、维护变量num,表示当前已经遍历的部分字符串中‘(’和')'数量的差值
2、遍历遇到左括号,num++;
3、遍历遇到右括号,num--;
4、在遍历过程中,如果num<0,说明当前右括号的个数超过了左括号的个数,返回false
5、遍历完成后,如果num==0,返回true;else 返回false。
时间复杂度O(N),空间复杂度O(1)。
代码:
class Parenthesis {
public:
bool chkParenthesis(string A, int n) {
// write code here
int num = 0;
for(int i = 0;i<n;i++){
if(A[i]=='(')
num++;
if(A[i]==')')
num--;
if(num<0)
return false;
}
if(num == 0)
return true;
else
return false;
}
};
欢迎提问与分享意见!