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

设计一个算法,要求判别一个算术表达式中的圆括号配对是否正确... 设计一个算法,要求判别一个算术表达式中的圆括号配对是否正确 展开
 我来答
刺友互
高粉答主

2020-03-23 · 每个回答都超有意思的
知道答主
回答量:3979
采纳率:100%
帮助的人:67.7万
展开全部

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

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

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

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

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

baihacker
推荐于2016-12-02 · TA获得超过1454个赞
知道小有建树答主
回答量:773
采纳率:100%
帮助的人:1213万
展开全部
我已经回答过类似问题#include <stdio.h>

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");

}

参考资料: http://zhidao.baidu.com/question/16705867.html

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式