括弧匹配检验
运行时限: 10000 ms 单次运行时限: 10000 ms 内存限制: 32 MB
总提交: 275次 通过: 103次
题目描述
假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ] ( ))或 [ ( [ ] [ ] ) ]等为正确的匹配,[ ( ] ) 或 ( [ ] ( ) 或 ( ( ) ) )均为
错误的匹配。现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配? 输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配
匹配就输出“OK”,不匹配就输出“Wrong”。输入一个字符串:[ ( [ ] [ ] ) ],输出: OK
程序输入说明
输入仅一行字符(字符个数小于255)。
程序输出说明
匹配就输出“OK”,不匹配就输出“Wrong”。
程序输入样例
可见格式 带空格和换行符的格式 带空格和换行符的格式说明
[ ( ] )
程序输出样例
Original Transformed 带空格和换行符的格式说明
Wrong
注意栈顶元素,top = 0,加入1个元素后stack[top++],top为1,此时栈顶元素为stack[]top-1]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char input[1000];
char stack[1000];
int i;
int top;
int flag;
int len;
while(~scanf("%s",input))
{
len = strlen(input);
i = 0;
flag = 1;
top = 0;
while(i<len && input[i] && flag)
{
if(input[i] == '[' || input[i] == '(')
stack[top++] = input[i];
if(input[i] == ']')
if(stack[top-1] == '[')
top--;
else
flag = 0;
if(input[i] == ')')
if(stack[top-1] == '(')
top--;
else
flag = 0;
i++;
}
if(flag && top ==0)
printf("OK\n");
else
printf("Wrong\n");
}
return 0;
}
网友评论