您的位置:首页 > 其它

验证括号是否匹配

2016-02-29 21:17 351 查看
题目描述:

输入一个字符串,其中有普通的字符与括号(包括(, ), [, ]),要求验证括号是否匹配,若匹配输出0,否则输出1.

输入:

dfa(sdf)df[dfds(dfd)]

输出:

0

代码:

#include <iostream>
using namespace std;
int match(char* str, int len)
{
int i = 0, j = 0;
char* kuohao=(char*)malloc(len*sizeof(char));

for (i = 0; i < len; i++)
{
if (str[i] == '(' || str[i] == '[' || str[i] == ')' || str[i] == ']')
{
kuohao[j] = str[i];
++j;
}
}
kuohao[j] = '\0';
cout << kuohao << endl;
char* heap = (char*)malloc(j*sizeof(char));
int k = 0;
for (i = 0; i < j; i++)
{
if (str[i] == '(' || str[i] == '[')
{
heap[k] = str[i];
k++;
}
else if (str[i] == ')')
{
if (heap[k - 1] == '(')
k--;
else
return 1;
}
else if (str[i] == ']')
{
if (heap[k - 1] == '[')
k--;
else
return 1;
}
}
return 0;
}
int main()
{
char temp;
char str[100];
int i = 0;
temp = getchar();
while (temp != '\n')
{
str[i] = temp;
i++;
temp = getchar();
}
str[i] = '\0';
int flag = match(str, i);
cout << flag << endl;
cin.get();
return 0;
}

参考代码:

#include <iostream>
using namespace std;
int main()
{
char a[100],c;
int i=0,flag=0;
c=getchar();
while(c!='\n'&&flag==0)
{
switch(c)
{
case('('):case('['):
a[i]=c;
i++;
break;
case(')'):
if(a[i-1]=='(')
{
a[i-1]='\0';
i--;
break;
}
else
{
flag=1;
break;
}
case(']'):
if(a[i-1]=='[')
{
a[i-1]='\0';
i--;
break;
}
else
{
flag=1;
break;
}
}
c=getchar();
}
cout<<flag<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: