洛谷1739表示式括號匹配
阿新 • • 發佈:2019-01-01
題目
假設一個表示式有英文字母(小寫)、運算子(+,—,*,/)和左右小(圓)括號構成,以“@”作為表示式的結束符。請編寫一個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回“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.