括号问题

作者: 李廷元

单位: 中国民用航空飞行学院

时间限制: 400 ms

内存限制: 64 MB

代码长度限制: 16 KB

问题描述

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

输入格式:

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

输出格式:

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

输入样例1:

sin(10+20)

输出样例1:

yes

输入样例2:

{[}]

输出样例2:

no


代码

#include<stdio.h>
#include<stdlib.h>
#define Maxsize 100 typedef struct SNode* Stack;
struct SNode {
char data[Maxsize];
int Top;
}; Stack create ();
int Push (Stack S, char x);
char Pop (Stack S); int main ()
{
char str[101];
Stack S = create ();
int i = 0, flag = 1;
gets(str);
while(str[i] != '\0')
{
if(str[i] == '(' || str[i] == '[' || str[i] == '{')
Push(S, str[i]);
else if(str[i] == ')' || str[i] == ']' || str[i] == '}')
{
if(S->Top == -1)
{
flag = 0;
printf("no\n");
break;
}
if(str[i] == ')')
{
if(S->Top == -1 || S->data[S->Top] != '(')
{
flag = 0;
printf("no\n");
break;
}
else Pop(S);
}
if(str[i] == ']')
{
if(S->Top == -1 || S->data[S->Top] != '[')
{
flag = 0;
printf("no\n");
break;
}
else Pop(S);
}
if(str[i] == '}')
{
if(S->Top == -1 || S->data[S->Top] != '{')
{
flag = 0;
printf("no\n");
break;
}
else Pop(S);
}
}
i++;
} if(flag != 0)
{
if(S->Top == -1)
printf("yes\n");
else
printf("no\n");
} return 0;
}
Stack create ()
{
Stack S = (Stack)malloc(sizeof(struct SNode));
S->Top = -1; return S;
}
int Push (Stack S, char x)
{
if(S->Top == 99)
{
printf("Stack Full\n");
return -1;
}
else
{
S->data[++(S->Top)] = x;
return 1;
}
}
char Pop (Stack S)
{
if(S->Top == -1)
{
printf("Stack Empty\n");
return -1;
}
else
return (S->data[(S->Top)--]);
}

一开始是使用的while((ch = getchar()) != '\n')来读取字符,结果一直超时,个人认为可能是因为调用getchar函数次数过多。

PTA-括号问题的更多相关文章

  1. 第六周PTA笔记 括号匹配调整+堆放石子+最大积分+168

    括号匹配调整 如果通过插入" +"和" 1"可以从中得到格式正确的数学表达式,则将带括号的序列称为正确的. 例如,序列 "(())()",& ...

  2. C语言第一次实验报告————PTA实验1.2.3内容

    一.PTA实验作业 题目1.温度转换 本题要求编写程序,计算华氏温度100°F对应的摄氏温度.计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型. 1.实验代 ...

  3. 2018年3月份的PTA(一)

    写程序证明p++等价于(p)++还是等价于(p++)? 由程序说明p++等价于(p)++,因为(p++)在程序中是没有地址的,而输出中p++和(p)++的地址不同是由于在线C语言开发环境地址是动态的 ...

  4. 2018年4月中旬的PTA(三)

    C高级第三次PTA作业(1) 题目6-1 输出月份英文名 1.设计思路 (1)算法(子函数) 第一步:定义字符型一级指针子函数名getmonth,形参整型n. 第二步:定义长度为12的字符数组指针mo ...

  5. 2018年3月底的PTA(二)

    C高级第二次PTA作业(1) 题目6-7 删除字符串中数字字符 1.设计思路 为了偷懒,本题算法和流程图是精简代码后的,具体请看本题实验代码的第二段代码. (1)算法(子函数) 第一步:定义子函数类型 ...

  6. C高级第一次PTA作业 要求三

    要求一.要求二 内容链接:http://www.cnblogs.com/X-JY/p/8550457.html 一.PTA作业中的知识点总结 1.6-1 计算两数的和与差(10 分) (1)*在程序中 ...

  7. 『ACM C++』 PTA 天梯赛练习集L1 | 036-037

    这几天比较忙,所以随便做做水题了,得赶紧把英剧搞完啊啊啊啊啊啊 ------------------------------------------------L1-036-------------- ...

  8. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

  9. PTA一般问题汇总与解答

    在进行PTA作业完成的过程中,大家很积极在完成作业,然后在不懂的地方,有许多的同学也向助教们提出了问题,我们在这里将大家的问题进行了一下汇总然后逐一解答. 1输出中常遇到的问题. 这个图片里我将同学们 ...

  10. 好1.1.4 PTA提交列表及说明

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 我在这个课程的目标是 这个作业在那个具体方面帮助我实现目标 概括本周的学习以及更加熟练本周的代码 参考文献 C语言程序设计 百度文献 (h ...

随机推荐

  1. 线程间的通信方式2--管道流Pipes

    “管道”是java.io包的一部分.它是Java的特性,而不是Android特有的.一条“管道”为两个线程建立一个单向的通道.生产者负责写数据,消费者负责读取数据. 下面是一个使用管道流进行通信的例子 ...

  2. mysql 安装版

    安装 1.MySQL的安装类型选择: 在“Choose Setup Type”对话框有“Typical”默认安装类型:“complete"完全安装类型:Custom自定义安装类型. 我们选择 ...

  3. ORACLE EXPDP命令使用详细

    相关参数以及导出示例: 1. DIRECTORY 指定转储文件和日志文件所在的目录DIRECTORY=directory_objectDirectory_object用于指定目录对象名称.需要注意,目 ...

  4. docker实战 (1) 关于docker的安装

    docker定义: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制 ...

  5. windows下建立netcore控制台程序,然后传送到centos7下的docker容器里运行

    1.首先,在window下用vs2017开发netcore控制台项目. 2.把建立好的项目传送到centos7下面的容器里. docker cp sharefoldersforwindows/ 359 ...

  6. python之mechanize模拟浏览器

    安装 Windows: pip install mechanize Linux:pip install python-mechanize 个人感觉mechanize也只适用于静态网页的抓取,如果是异步 ...

  7. 《SQL Server 2008从入门到精通》--20180629

    约束 主关键字约束(Primary Key Constraint) 用来指定表中的一列或几列组合的值在表中具有唯一性.建立主键的目的是让外键来引用. Primary Key的创建方式 在创建表时创建P ...

  8. 转:.net设计模式之单例模式

    原文地址:http://terrylee.cnblogs.com/archive/2005/12/09/293509.html 概述 Singleton模式要求一个类有且仅有一个实例,并且提供了一个全 ...

  9. python安装lib库

    time:2015/11/11 双十一 一.初衷 看到一篇帖子[1],里面有python代码,就想实现一下,代码如下: import cv2 as cv import numpy as np from ...

  10. Windows删除指定时间之前指定后缀名的文件

    时间判定标准:文件创建时间 实例:删除 D:\backup 目录下(包括子文件夹),7天前 “.bak”后缀名的文件及30天前后缀名为 “*.log” 的文件 批处理: @echo off echo ...