題目描述
給定乙個字串,列印裡面匹配的括號的個數和下標,比如「(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,左...