括弧匹配檢驗(棧)

2021-07-11 01:57:59 字數 1624 閱讀 6720

description

假設表示式中允許包含兩種括號:圓括號和方括號,其巢狀的順序隨意,如([ ]())或[([ ][ ])]等為正確的匹配,[( ])或([ ]( )或 ( ( ) ) )均為錯誤的匹配。 

現在的問題是,要求檢驗乙個給定表示式中的括弧是否正確匹配? 

輸入乙個只包含圓括號和方括號的字串,判斷字串中的括號是否匹配,匹配就輸出 「ok」 ,不匹配就輸出「wrong」。 

input

輸入僅一行字元(字元個數小於255)

output

匹配就輸出 「ok」 ,不匹配就輸出「wrong」。

sample input

[([][])]

sample output

ok

解題思路:

先以字串的形式讀入,然後進行判斷,如果是

』[『或者

』(『就入棧,如果是』)』

或者』]』

就進行判斷,如果它符合要求就出棧,不然就返回

false

,最後輸出

ok或者

wrong

即可。

程式:
const
maxn=20;

var
c:string;

function judge(c:string):boolean;
var

s:array[1..maxn]of char;

top,i:longint;

ch:char;

begin

judge:=true;

top:=0;

for i:=1 to length(c) do

begin

ch:=c[i];

case ch of

'[','(':begin inc(top); s[top]:=ch; end;

']',')':if ((s[top]='(') and (ch=')') or (s[top]='[') and (ch=']')) and (top>0) then dec(top) else begin judge:=false; exit; end;

end;

end;

if top<>0 then judge:=false;

end;

begin
readln(c);
if judge(c) then writeln('ok') else writeln('wrong');
end.

棧 1354 括弧匹配檢驗

題目描述 假設表示式中允許包含兩種括號 圓括號和方括號,其巢狀的順序隨意,如 或 等為正確的匹配,或 或 均為錯誤的匹配。現在的問題是,要求檢驗乙個給定表示式中的括弧是否正確匹配?輸入乙個只包含圓括號和方括號的字串,判斷字串中的括號是否匹配,匹配就輸出 ok 不匹配就輸出 wrong 輸入乙個字串 ...

括弧匹配檢驗 UPC

假設表示式中允許包含兩種括號 圓括號和方括號,其巢狀的順序隨意,如 或 等為正確的匹配,或 或 均為錯誤的匹配。現在的問題是,要求檢驗乙個給定表示式中的括弧是否正確匹配?輸入乙個只包含圓括號和方括號的字串,判斷字串中的括號是否匹配,匹配就輸出 ok 不匹配就輸出 wrong 輸入乙個字串 輸出 ok...

括弧匹配檢驗 括號匹配問題

題目描述 假設表示式中允許包含兩種括號 圓括號和方括號,其巢狀的順序隨意,如 或 等為正確的匹配,或 或 均為錯誤的匹配。現在的問題是,要求檢驗乙個給定表示式中的括弧是否正確匹配?輸入乙個只包含圓括號和方括號的字串,判斷字串中的括號是否匹配,匹配就輸出 ok 不匹配就輸出 wrong 輸入乙個字串 ...