验证括号是否匹配
2016-02-29 21:17
351 查看
题目描述:
输入一个字符串,其中有普通的字符与括号(包括(, ), [, ]),要求验证括号是否匹配,若匹配输出0,否则输出1.
输入:
dfa(sdf)df[dfds(dfd)]
输出:
0
代码:
参考代码:
输入一个字符串,其中有普通的字符与括号(包括(, ), [, ]),要求验证括号是否匹配,若匹配输出0,否则输出1.
输入:
dfa(sdf)df[dfds(dfd)]
输出:
0
代码:
#include <iostream> using namespace std; int match(char* str, int len) { int i = 0, j = 0; char* kuohao=(char*)malloc(len*sizeof(char)); for (i = 0; i < len; i++) { if (str[i] == '(' || str[i] == '[' || str[i] == ')' || str[i] == ']') { kuohao[j] = str[i]; ++j; } } kuohao[j] = '\0'; cout << kuohao << endl; char* heap = (char*)malloc(j*sizeof(char)); int k = 0; for (i = 0; i < j; i++) { if (str[i] == '(' || str[i] == '[') { heap[k] = str[i]; k++; } else if (str[i] == ')') { if (heap[k - 1] == '(') k--; else return 1; } else if (str[i] == ']') { if (heap[k - 1] == '[') k--; else return 1; } } return 0; } int main() { char temp; char str[100]; int i = 0; temp = getchar(); while (temp != '\n') { str[i] = temp; i++; temp = getchar(); } str[i] = '\0'; int flag = match(str, i); cout << flag << endl; cin.get(); return 0; }
参考代码:
#include <iostream> using namespace std; int main() { char a[100],c; int i=0,flag=0; c=getchar(); while(c!='\n'&&flag==0) { switch(c) { case('('):case('['): a[i]=c; i++; break; case(')'): if(a[i-1]=='(') { a[i-1]='\0'; i--; break; } else { flag=1; break; } case(']'): if(a[i-1]=='[') { a[i-1]='\0'; i--; break; } else { flag=1; break; } } c=getchar(); } cout<<flag<<endl; return 0; }
相关文章推荐
- Light oj-1370(素数筛选)
- leetcode66.PlusOne
- 树形dp poj2342
- 韩顺平XML学习1
- cocos2d-x之单点触碰初试
- HDU2899 Strange fuction
- Laravel 5.1 学习 之 授权
- android app 安装过程
- 重复的成员‘page’错误的解决方法
- Java抽象类和接口的若干问题
- 安卓通知的使用系列1:土司(Toast)通知和自定义土司(Toast)通知
- AutoCAD生成png透明图像
- SharePoint Search之(一):创建Search服务应用程序
- Sdut 2164 Binomial Coeffcients (组合数学) (山东省ACM第二届省赛 D 题)
- Android重要控件———ListView
- IOS 开发过程中的 消息通知 小红点
- Block解析_1
- R语言学习:数据结构3-矩阵、数组
- 详解OpenGL中的各种变换(投影变换,模型变换,视图变换)
- Android性能分析——Activity启动速度分析工具