括號匹配問題的總結

2021-10-01 21:05:55 字數 1387 閱讀 6274

括號匹配問題有若干種,這裡分析其中一種括號裡有數字有字元,然後求的最終結果的問題。

給出兩道例題,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 基本演算法思...