PTA-括号问题
括号问题
作者: 李廷元
单位: 中国民用航空飞行学院
时间限制: 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-括号问题的更多相关文章
- 第六周PTA笔记 括号匹配调整+堆放石子+最大积分+168
括号匹配调整 如果通过插入" +"和" 1"可以从中得到格式正确的数学表达式,则将带括号的序列称为正确的. 例如,序列 "(())()",& ...
- C语言第一次实验报告————PTA实验1.2.3内容
一.PTA实验作业 题目1.温度转换 本题要求编写程序,计算华氏温度100°F对应的摄氏温度.计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型. 1.实验代 ...
- 2018年3月份的PTA(一)
写程序证明p++等价于(p)++还是等价于(p++)? 由程序说明p++等价于(p)++,因为(p++)在程序中是没有地址的,而输出中p++和(p)++的地址不同是由于在线C语言开发环境地址是动态的 ...
- 2018年4月中旬的PTA(三)
C高级第三次PTA作业(1) 题目6-1 输出月份英文名 1.设计思路 (1)算法(子函数) 第一步:定义字符型一级指针子函数名getmonth,形参整型n. 第二步:定义长度为12的字符数组指针mo ...
- 2018年3月底的PTA(二)
C高级第二次PTA作业(1) 题目6-7 删除字符串中数字字符 1.设计思路 为了偷懒,本题算法和流程图是精简代码后的,具体请看本题实验代码的第二段代码. (1)算法(子函数) 第一步:定义子函数类型 ...
- C高级第一次PTA作业 要求三
要求一.要求二 内容链接:http://www.cnblogs.com/X-JY/p/8550457.html 一.PTA作业中的知识点总结 1.6-1 计算两数的和与差(10 分) (1)*在程序中 ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 036-037
这几天比较忙,所以随便做做水题了,得赶紧把英剧搞完啊啊啊啊啊啊 ------------------------------------------------L1-036-------------- ...
- PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)
PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: 欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...
- PTA一般问题汇总与解答
在进行PTA作业完成的过程中,大家很积极在完成作业,然后在不懂的地方,有许多的同学也向助教们提出了问题,我们在这里将大家的问题进行了一下汇总然后逐一解答. 1输出中常遇到的问题. 这个图片里我将同学们 ...
- 好1.1.4 PTA提交列表及说明
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 我在这个课程的目标是 这个作业在那个具体方面帮助我实现目标 概括本周的学习以及更加熟练本周的代码 参考文献 C语言程序设计 百度文献 (h ...
随机推荐
- python 字符串的方法和注释
capitalize() 把字符串的第一个字符改为大写 casefold() 把整个字符串的所有字符改为小写 center(width) 将字符串居中,并使用空格填充至长度 width 的新字符串 c ...
- Linux学习之CentOS(三)----将Cent0S 7的网卡名称eno16777736改为eth0
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- 使用 Jenkins 和 Team Services 将应用部署到 Linux VM
持续集成 (CI) 和持续部署 (CD) 是一个管道,可以通过它生成.发布和部署代码. Team Services 针对到 Azure 的部署提供了一组完整的功能完备的 CI/CD 自动化工具. Je ...
- Windows Azure中WebSite 网站, Cloud Service 云服务,Virtual Machine 虚拟机的比较
在Windows Azure服务平台里,Web Site特点是: 在Windows Azure上构建高度可扩展的Web站点. 快速.轻松部署一个高度可扩展的云环境,并且可以从很小的规模开始. 使用您所 ...
- [OPENSSL下载][证书] OPENSSL将PFX证书转换为PEM格式
OpenSSL Convert PFX Convert PFX to PEM openssl pkcs12 -in certificate.pfx -out certificate.cer -node ...
- Fiddler下Firefox提示“您的连接并不安全”的解决办法
一.版本信息 Firefox 最新版本V46.0.1 Fiddler 最新版本V4.6.2.3 二.错误信息 开启fiddlers的https协议捕获的方法,百度上可以查到不再赘述,直接放张图(Too ...
- Office 365实现单点登录系列(2)—Azure AD Connect安装与配置
前言 第一篇文章我已经为大家分享了在在Azure上搭建域控服务器的方法,如果大家本地已经有了域环境,可以直接从这一篇文章开始阅读.Azure AD Connect的前身是DirSync,是专门用于目录 ...
- APUE 4.8 umask函数
- 利用skipList(跳表)来实现排序(待补充)
用于排名的数据结构 一般排序为利用堆排序(二叉树)和利用skipList(跳表)的方式 redis中SortedSet利用skipList(跳表)来实现排序,复杂度为O(logn),利用空间换时间,类 ...
- selenium安装浏览器驱动
3.0以上版本恩的selenium需要安装驱动 pip show selenium 安装驱动 1.下载驱动地址: 火狐:https://github.com/mozilla/geckodriver/r ...