【死磕算法·字符串问题】字符串括号匹配问题

题目大意:

给定一个字符串,判定字符串是否是括号的有效组合。

如“(())”返回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;
    }
};

欢迎提问与分享意见!

猜你喜欢

转载自blog.csdn.net/gulaixiangjuejue/article/details/85015115