【死磕演算法·字串問題】字串括號匹配問題
阿新 • • 發佈:2018-12-22
題目大意:
給定一個字串,判定字串是否是括號的有效組合。
如“(())”返回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; } };
歡迎提問與分享意見!