sailven 2020-05-16 21:34 采纳率: 50%
浏览 334
已采纳

括号匹配栈的应用问题,还有哪里不对?

给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。

输入格式:
输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。

输出格式:
如果括号配对,输出yes,否则输出no。

输入样例1:

sin(10+20)

输出样例1:

yes

输入样例2:

{[}]

输出样例2:

no

**不知道为什么第三个测试点总是通不过……试了一晚上,有大神知道怎么改吗?
**

图片说明

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char str[101],check[101];
    int i,top=-1,flag=1,flag2=0;
    char temp;

    scanf("%s",str);
    for(i=0;i<=strlen(str);i++){
        if(str[i]=='('||str[i]=='['||str[i]=='{')
        {   flag2++;
            top++;
            check[top]=str[i];
        }

        else if(str[i]==']'||str[i]==')'||str[i]=='}')
        {   flag2++;  
            if(top==-1)
              {flag=0;break;}
              temp=check[top];top--;
             if ((str[i] == ')'&& temp !='(' )|| (str[i] == ']'&& temp != '[') || (str[i] == '}'&& temp!= '{'))
             {flag=0;break;}

        }

    }       
    if(flag2==0)
    {printf("no");return 0;}
    if(flag==0||top!=-1)
        printf("no");
    else 
        printf("yes");
    return 0;
}

  • 写回答

2条回答 默认 最新

  • threenewbee 2020-05-16 22:48
    关注

    测试了你的代码,当输入123的时候,应该返回yes吧,你返回了no

    正确写法参考我之前的回答
    https://ask.csdn.net/questions/714224

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!