洛谷1739表达式括号匹配

来源:互联网 发布:linux 如何修改locale 编辑:程序博客网 时间:2024/06/07 17:17

题目

假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“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.
1 0
原创粉丝点击