列印 C++ 中的括號序號
本問題給定一個表示式,我們須列印括號號碼序列。我們看一個示例來更好地理解問題。
例如:
Input : ((()())()) Output : 1233442551
說明 − 在這裡,我們遇到了 5 對括號,我們按照其出現的[順序列印了它們。
既然我們知道了這個問題,我們接下來解決此問題的方案。
解決此問題需要一個堆疊資料結構。我們將使用一個變數來記錄左括號的數量,堆疊對右括號進行跟蹤。我們將對左括號進行計數並將它們推到堆疊中,在遇到右括號時彈出它們。
演算法
Step 1 : Initialise leftBrackets = 1. stack rightBrackets, empty. Step 2 : traverse the expression using variable i = 0 to n-1. Step 3 : if expression[i] == ‘(’ i.e. left bracket is encountered. Then, Step 3.1 : PRINT ‘leftBracket ‘. Step 3.2 : push the value of leftBracket in stack. Step 3.3 : leftBracket++. Step 4 : if expression[i] == ‘)’ i.e. right bracket is encountered. Then, Step 4.1 : PRINT top of stack. Step 4.2 : pop top element of the stack. Step 5 : EXIT.
示例
現在,我們建立程式設計來演示上述演算法的實現。
#include <bits/stdc++.h>
using namespace std;
void bracketCount(string expression, int n){
int leftBracket = 1;
stack<int> rightBracket;
for (int i = 0; i < n; i++) {
if (expression[i] == '(') {
cout<<leftBracket<<" ";
rightBracket.push(leftBracket);
leftBracket++;
}
else if(expression[i] == ')') {
cout<<rightBracket.top() << " ";
rightBracket.pop();
}
}
}
int main(){
string expression = "()((())()())";
int n = expression.size();
bracketCount(expression, n);
return 0;
}輸出
1 1 2 3 4 4 3 5 5 6 6 2
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP