列印匹配括號的個數和下標

2021-08-27 23:54:12 字數 756 閱讀 5916

題目描述

給定乙個字串,列印裡面匹配的括號的個數和下標,比如「(1)23(4()5)6」,一共有3對括號,0和2是一對,5和10是一對,7和8是一對。輸入資料的括號均能成對出現,以下輸入是不存在的:"((1)",兩個左括號有乙個無法成對。

輸入描述

乙個包含數字和括號的字串,一行。

輸出描述

多行輸出,第一行是成對括號的個數,後續每行是乙個括號的下標。

示例輸入

(1)23(4()5)6輸出

說明:有3對成對的括號,每次輸出一對的下標,輸出順序以左括號所在下標的公升序排列,故0、2一對,5、10一對,7、8一對。

思路

遇到左括號將下標入棧,因為每個左括號都有與之匹配的右括號,所以遇到左括號的時候就直接計數;遇到右括號將棧頂下標和當前下標存到map中,彈出棧頂,map可以自動排序,方便輸出。

#include #include#include#include#includeusing namespace std;

int main()

else if(str[i]==')'));

stk.pop();}}

printf("%d\n",cnt);

for(auto m:indexmap)

return 0;

}

列印匹配括號

開始抽空做一些演算法題,留下記錄作為菜鳥的成長見證吧。這道題來自於cracking the coding interview,要求列印n對括號的所有可能匹配。我採用遞迴來做,這樣編寫比較方便而且容易弄懂,但用迭代應該會效率快不少而且遞迴一定能轉換成迭代吧,以後有空研究下 如下 include std...

括號匹配的檢驗

一 題目 假設表示式中可以允許包含三種括號 圓括號 和 方括號 和 和花括號 且這三種括號可按任意的次序巢狀使用。即 或者 等為正確格式,或者均為不正確的格式。編寫判別給定表示式中所含括號是否正確配對出現的演算法。二 思路 檢驗括號是否匹配的方法可以用 期待的急迫程度 這個概念來描述。例如,考慮下列...

7012 括號的匹配

time limit 10 second memory limit 2 mb 問題描述 假設乙個表示式有英文本母 小寫 整數,運算子 和左右小 圓 括號構成,以 作為表示式的結束符.請編寫乙個程式檢查表示式中的左右圓括號是否匹配,若匹 配,則返回 yes 否則返回 no 假設表示式長度小於255,左...