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条)

报告相同问题?

悬赏问题

  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示