1. 程式人生 > >洛谷1739表示式括號匹配

洛谷1739表示式括號匹配

題目

假設一個表示式有英文字母(小寫)、運算子(+,—,*,/)和左右小(圓)括號構成,以“@”作為表示式的結束符。請編寫一個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回“YES”;否則返回“NO”。表示式長度小於255,左圓括號少於20個。

題解

傳說中是線性資料結構,可是感覺我用的是模擬(捂臉)算了,不管它——、——
統計左括號和右括號的數量,若最後左括號數量比右括號多,很明顯就‘NO’了,若統計過程中出現這種情況,也是‘NO’,兩種都不是,就‘YES’。
時間複雜度O(255)

程式碼

var
  s:ansistring;
  i,l,r:longint;
begin
readln(s); for i:=1 to length(s) do begin if s[i]='(' then inc(l) else if s[i]=')' then dec(l); if l<0 then begin writeln('NO');halt;end; end; if l>0 then writeln('NO') else writeln('YES'); end.