设计一个算法,要求判别一个算术表达式中的圆括号配对是否正确

2024-11-06 05:07:24
推荐回答(2个)
回答1:

1、先去掉字符串前面的空白字符,然后通过正则表达式将符合题目要求的数字型字符串解析出来,然后对数字串部分进行逐个处理。

2、先判断第1位非空字符,如果不是+、- 或数字字符,则直接返回 0, 否则对其余字符进行遍历处理,此时,对于数字字符,需要进行越界判断,如果遇到非数字字符,直接跳出循环。

3、控制台输出测试结果,符合预期,算法均正确返回。

4、构建 100000 个长度为 100 的随机字符串。

5、取10次运行结果的平均值,直接处理算法明显优于正则匹配算法,执行效率,前者大概是后者的10倍。

回答2:

我已经回答过类似问题#include

void getstr(char* p){
printf("input:\t");
scanf("%s", p);
return;
}

void main(){
char st[255];/*在程序中没有起多大作用*/
int top = 0;
char str[255];
char k;
int i=0;
int st_error=0;

getstr(str);
while ( (k=str[i]) != 0)
{
if (k == '(' ) st[top++] = k;/*top++;也一样,因为st这个栈空间没有起到存储的作用*/

if (k == ')' )
{
if (top == 0 )
{
st_error=1;
break;
}
else
top--;
}
i++;
}
if(st_error==0&&top==0) printf("匹配检查通过\n");
else
if(st_error==1) printf("缺少左括号!\n");
else
if(top>0) printf("缺少右括号!\n");

}