括號匹配問題有若干種,這裡分析其中一種括號裡有數字有字元,然後求的最終結果的問題。
給出兩道例題,leetcode224和leetcode394。
題目描述
實現乙個基本的計算器來計算乙個簡單的字串表示式的值。
字串表示式可以包含左括號 ( ,右括號 ),加號 + ,減號 -,非負整數和空格 。
示例輸入:
"(1+(4+5+2)-3)+(6+8)"
輸出:23
解決方案
class
solution
res = sign * t + res;
}else
if(c ==
'-') sign =-1
;else
if(c ==
'+') sign =1;
//遇到左括號用棧儲存之前的資訊,並將資訊重置
else
if(c ==
'(')
//遇到右括號取出棧中資訊,並計算出結果
else
if(c ==
')')
}return res;
}}
題目描述
給定乙個經過編碼的字串,返回它解碼後的字串。
編碼規則為: k[encoded_string],表示其中方括號內部的 encoded_string 正好重複 k 次。注意 k 保證為正整數。
你可以認為輸入字串總是有效的;輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。
此外,你可以認為原始資料不包含數字,所有的數字只表示重複的次數 k ,例如不會出現像 3a 或 2[4
] 的輸入。
示例s =
"3[a]2[bc]"
, 返回 "aaabcbc"
.s =
"3[a2[c]]"
, 返回 "accaccacc"
.s =
"2[abc]3[cd]ef"
, 返回 "abcabccdcdcdef"
.
解決方案
class
solution
}//儲存當前資訊
else
if(c ==
'[')
//提出資訊,得到總結果
else
if(c ==
']')
else
}return res.
tostring()
;}}
總結:核心思路就是在遇到左括號,儲存當前資訊,然後去算括號中的邏輯,當遇到右括號時候,把之前棧中儲存的之前的資訊與括號裡的資訊進行拼接處理即可。 括號匹配 問題總結
大家都知道算術表示式中,括號必須配對,現在任意給出乙個算術表示式,判斷其括號是否配對。如果配對,輸出yes,否則輸出no。含多組測試資料,輸入首先是乙個整數tt表示測試資料組數 0對應每組測試資料,輸出一行結果。input output 2 32 78 23 78 32 78 23 78 yes n...
括號匹配問題思路總結
給定一串字元,不超過100個字元,可能包括括號 數字 字母 標點符號 空格,程式設計檢查這一串字元中的 是否匹配。輸入在一行中給出一行字串,不超過100個字元,可能包括括號 數字 字母 標點符號 空格。如果括號配對,輸出yes,否則輸出no。sin 10 20 yes no首先需要使用stl容器st...
括號匹配問題
時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 現在,有一行括號序列,請你檢查這行括號是否配對。輸入第一行輸入乙個數n 0輸出 每組輸入資料的輸出佔一行,如果該字串中所含的括號是配對的,則輸出yes,如果不配對則輸出no 樣例輸入 3 樣例輸出 no noyes 基本演算法思...