1. 程式人生 > >【死磕演算法·字串問題】字串括號匹配問題

【死磕演算法·字串問題】字串括號匹配問題

題目大意:

給定一個字串,判定字串是否是括號的有效組合。

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

歡迎提問與分享意見!