前端|LeetCode20_有效的括號

題目描述

給定一個只包括 '('')''{''}''['']' 的字符串,判斷字符串是否有效。spa

有效字符串需知足:code

  1. 左括號必須用相同類型的右括號閉合。
  2. 左括號必須以正確的順序閉合。

注意空字符串可被認爲是有效字符串。blog

解題思路

拿到題目,第一件事情,就是先把問題分解,從題目描述中能夠看出要對三種類型的組合括號進行判斷,那咱們就先考慮一種括號的狀況。題目中提到的注意空字符,也能夠先不考慮。字符串

分解後的題目描述

給定一個只包括 '('')'的字符串,判斷字符串是否有效。it

有效字符串需知足:class

  1. 左括號必須以正確的順序閉合。

思路

如今題目就變得更加簡單了,由於只有這一種類型的符號,咱們不用考慮括號類型是否正確。核心的問題就是如何判斷括號的順序是否正確。循環

那如何判斷括號的順序是否正確呢?im

括號只有左括號和右括號兩種,左括號在左邊,右括號在右邊即爲正確的順序,其餘的順序都是錯誤的。img

使用棧後進先出的特性,先把左括號推入棧中,等到遇到右括號的時候,把左括號從棧推出,和右括號進行比較,若是兩個括號匹配,那就證實這一對括號是正確的,接下來重複上述操做,直到沒有右括號,退出循環。退出循環後檢查棧中是否還有括號存在,若是棧爲空,則證實全部括號都配對完成,反之,則證實字符串不是有效的。co

解決了一個類型的括號後,遇到多個類型的括號,只要在判斷括號是否匹配的時候去檢測一下是不是配對括號便可。

實現

Untitled (3).jpeg

相關文章
相關標籤/搜索