js關於判斷算式中括號匹配的問題

2021-07-31 23:15:48 字數 908 閱讀 5829

學習前端有段時間了,一直沒有學習過演算法。在我的心中一直覺得沒學習過演算法的程式設計師不是乙個合格的程式設計師。於是就翻看資料結構與演算法這本書,看到棧的時候,提到乙個有趣的

問題:如何驗證乙個算式中的括號否匹配。一開始很糾結,以為只要是括號成對出現,不論怎樣排列都是要判斷出來。例如:)這種括號,一直鑽到這個牛角尖中出不來。

後來仔細一想是算式中,有哪個算式會有這麼奇葩的括號組合。瞬間被自己的傻給折服啦。

js中有自己的棧資料結構,因此不必自行設計乙個棧機制出來,不過我還是想把如何用陣列基本的資料結構實現棧給寫出來:

function

stack

()function

push

(element)

function

pop()

function

length

()function

clear

()

上面就通過陣列實現了乙個棧;下面就通過棧來實現算式括號匹配的演算法

function

mate

(equation)":

transnum=s.pop();

if(transnum!="}") return

false;

break; } }

if(s.length()==0)else

}

以上演算法就實現了算式括號匹配問題,寫出來之後我又上網搜了其他人的一些演算法。有使用正則

把算式中的所有括號都匹配出來再遍歷的。其實核心都一樣,都是利用棧機制。

遍歷算式當碰到算式中的( , [ 或 時,將棧中已

有的元素彈出與之匹配,最後棧的長度為0說明括號全部匹配。以上內容是己拙見,有錯誤還請各

位大牛指出,謝謝!!!

判斷算術表示式中的括號是否匹配

問題描述 假設乙個算術表示式中包含圓括號 方括號和花括號3種型別的括號,編寫乙個演算法來判斷表示式中的括號是否匹配,以字元 作為算術表示式的結束符。解決問題思想 遇見左括號就進棧,遇見右括號就出棧。當括號匹配時上一次進棧和本次出棧的括號肯定配對,所以不需要迴圈依次出棧判斷括號是否配對 此處之前沒有想...

js的if判斷,關於 的判斷

關於if的判斷 在js中,if的判斷是遵循一定原則的,括號內的表示式會被強制轉化為布林型別,輸出為true或者false。對於不同中型別的表示式js有不同的輸出。對於型別為undefined和null表示式,輸出結果為false 對於型別為object的表示式,直接輸出結果為true 對於型別為bo...

利用棧的特性判斷括號是否匹配

括號匹配的檢驗 假設輸入字串中有三種括號,大括號 中括號 小括號,其巢狀的方式是隨意的。即類似的都為正確格式。檢驗括號是否匹配的方法可用 期待的急迫程度 來解決。例如下面的括號串 當計算機接受第乙個括號時,它期待著第六個括號與它見面,然而我們輸入的卻是第二個括號,同理,一直到第三個括號,3期待著4與...