給出乙個僅僅包含『(』,『)』,『[』,『]』,『』的字元,判斷輸入的字串是否是有效的,空字串是有效的。
例:input: 「()」 output: true
input: 「(){}」 output: true
input: 「(]」 output: false
思路:括號匹配是資料結構棧的典型應用,首先將第乙個元素進行入棧,然後將後面的元素與棧頂元素進行比較,如果與棧頂元素匹配成功,則將棧頂元素出棧,反之,將字元進棧。最後判斷棧是否為空,為空則匹配成功。
**:
class solution
stackstack = new stack();
for(int i = 0;i < s.length();i++)':
if(!stack.empty() && stack.peek() == '
}return stack.empty();
}}
b bd 完成括號匹配(記錄左括號數)
給出乙個括號序列s,允許你在s的開始和結尾處新增一定數量的左括號 或者右括號 使其變為乙個合法的括號匹配序列。你能求出新增最少的括號之後的合法的括號匹配序列是什麼嗎?思路 實時記錄左括號的數量l,如果遇到右括號時,若左括號數量l為0,則證明需要在當前右括號前面增加乙個左括號 def solve s ...
第六周 括號的匹配
all right reserved.date 2015年10月6日 版本 v1.0.1 作業系統 xp 執行環境 vc6.0 問題描述 假設表示式中允許三種括號 圓括號 方括號和大括號。編寫乙個演算法,判斷表示式中的各種左括號是否與右括號匹配。例如,輸入2 3 4 2 8,輸出匹配正確 輸入2 3...
列印匹配括號
開始抽空做一些演算法題,留下記錄作為菜鳥的成長見證吧。這道題來自於cracking the coding interview,要求列印n對括號的所有可能匹配。我採用遞迴來做,這樣編寫比較方便而且容易弄懂,但用迭代應該會效率快不少而且遞迴一定能轉換成迭代吧,以後有空研究下 如下 include std...