要判斷一個前序運算式是否合法,可以使用線性掃瞄方式,遍歷運算式的每個元素,同時利用一個堆疊(stack)來記錄每個運算符的操作數,具體步驟如下:
從左至右遍歷前序運算式的每個元素。
如果當前元素是一個運算符,將其壓入堆疊中。
如果當前元素是一個操作數,則從堆疊中彈出該運算符,並將其對應的操作數加1。
如果在彈出運算符之前,堆疊已經為空,或者彈出的運算符沒有對應的操作數,則前序運算式不合法,返回false。
當所有元素都被處理完畢後,檢查堆疊是否為空,如果不為空,則前序運算式不合法,返回false。
如果前序運算式合法,返回true。