給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串
思路:使用棧
判斷括號的有效性可以使用「棧」這一資料結構來解決。
我們對給定的字串 ss 進行遍歷,當我們遇到乙個左括號時,我們會期望在後續的遍歷中,有乙個相同型別的右括號將其閉合。由於後遇到的左括號要先閉合,因此我們可以將這個左括號放入棧頂。
當我們遇到乙個右括號時,我們需要將乙個相同型別的左括號閉合。此時,我們可以取出棧頂的左括號並判斷它們是否是相同型別的括號。如果不是相同的型別,或者棧中並沒有左括號,那麼字串 ss 無效,返回 \textfalse。為了快速判斷括號的型別,我們可以使用雜湊對映(hashmap)儲存每一種括號。雜湊對映的鍵為右括號,值為相同型別的左括號。
在遍歷結束後,如果棧中沒有左括號,說明我們將字串 ss 中的所有左括號閉合,返回 \texttrue,否則返回 \textfalse。
注意到有效字串的長度一定為偶數,因此如果字串的長度為奇數,我們可以直接返回 \textfalse,省去後續的遍歷判斷過程。
class
solution
//字串型別
mappairs =
newhashmap
()','}
;//建立棧
deque
stack =
newlinkedlist
();//進行遍歷
for(
int i =
0; i < len; i++
) stack.
pop();
}else
}return stack.
isempty()
;}}
20 有效括號
1.題目描述 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。2.示例 輸入 輸出 true輸入 輸出 false3.思路 可以採用棧來解決,第一步 判斷棧是否空,為空則進乙個括號,若不為空,則判斷當前括號和棧頂元素是否匹配,不...
20 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...
20 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...