給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。
有效字串需滿足:
1.左括號必須用相同型別的右括號閉合。
2.左括號必須以正確的順序閉合。
!!!注意空字串可被認為是有效字串。
示例 1:
輸入: 「()」示例2.輸出: true
輸入: 「(]」示例3:輸出: false
輸入: 「([)]」示例4:輸出: false
輸入: 「」1.呼叫map介面實現建立map例項放入(括號)鍵值對作為後序判定輸出: true
2,建立乙個棧
3,遍歷字串,逐個取出字元
3.1遍歷過程中如果為左括號就入棧
3.2如果為右括號,就取出棧頂元素查表對比是否與右括號相同
4.遍歷結束,棧為空,且之前沒有返回false,就認為所有括號匹配
(具體流程也可參考**注釋)
public
static
boolean
isvalid
(string str)')
; map.
put(
'[',
']')
;//先建立乙個棧
stack
stack =
newstack
<
>()
;//迴圈遍歷每個字元
for(
int i =
0; i < str.
length()
; i++
)//判斷rec為右括號即取出棧頂元素
if(stack.
empty()
)char top = stack.
pop();
//判斷c是否為右括號,如果是就取出棧頂元素top與rec比較
if(map.
get(top)
== rec )
return
false;}
if(stack.
empty()
)return
false
;}
棧解決括號匹配問題
題目 假設乙個表示式中可以包含三種括號 小括號,中括號,大括號,且這三種括號可以任意次序巢狀使用,如 3 5 4 編寫判斷表示式括號是否匹配的程式。表示式為字串。解題思路 解決括號匹配問題我們要考慮的是優先順序,大家學過數學的都知道要想解決這類算式我們要做的就是去括號,去括號不能隨便去,要先去除最後...
用棧解決括號匹配問題
define crt secure no warnings 1 include include include typedef char datatype define capacity 100 底層空間的總大小 typedef struct stack stack 初始化 void stackin...
使用async await更好的解決非同步問題
async函式是generator的乙個語法糖,使用async函式實際上返回的是乙個promise物件。如下 async function fn 或者 const fn async 複製 在宣告函式的時候,前面加上關鍵字async即可。我們可以使用console.log列印出上邊宣告的函式fn,結果...