华为机试之括号匹配
来源:互联网 发布:vb.net socket入门 编辑:程序博客网 时间:2024/06/05 21:16
题目描述:
输入一串字符串,其中有普通的字符与括号组成:包括‘(’‘)’‘[’ ']',要求验证括号是否匹配,如果匹配则输出0,否则输出1.
题目思路: 严蔚敏数据结构书上49页有写,可以模拟栈的操作。检验括号是否匹配的方法用期待的急迫程度来描述。
[ ( [ ] [ ] ) ]
当计算机接受了第一个括号后,它期待着与其匹配的第8个括号的出现,然而等来的确实第2个括号,此时第一个括号[ 只能靠边,而迫切等待与第2个括号相匹配的。。。依次类推。
这个处理过程与栈的特点相吻合,由此,在算法中设一个栈,每读入一个括号,若是右括号,则或者使置于栈顶的最急迫的期待得以消解,或者是不合法的情况。若是左括号,则作为一个新的更急迫的期待压入栈中,自然使原来的在栈中的所有未消解的期待的急迫性都降了一级。本题只是假如个其他字符。
#include<iostream>using namespace std;#define m 20typedef char ElemType;typedef struct stacknode{ElemType stack[m];int top;}stacknode;stacknode *sp;
//初始化一个栈void Init(stacknode *st){st->top = 0;}//push操作void Push(stacknode *st,ElemType x){if(st->top == m)cout<<"The stack is overflow"<<endl;else{st->stack[st->top] = x;(st->top)++;}}void Pop(stacknode *str,ElemType &e){(str->top)--;e = str->stack[str->top];}bool Panduan(char *s){sp = (stacknode*)malloc(sizeof(stacknode));Init(sp);char e;for(int i = 0;i<strlen(s);i++){if(s[i]!=']'&&s[i]!= ')')Push(sp,s[i]);else if(s[i] == ']'){Pop(sp,e);while(e!='['&&e!= '('){Pop(sp,e);}if(e == '('){return false;}}else if(s[i] == ')'){Pop(sp,e);while(e!='['&&e!= '('){Pop(sp,e);}if(e == '['){return false;}}}if(sp->top == 0)return 1;elsereturn 0;}int main(){char s[m];while(gets(s)){cout<<Panduan(s)<<endl;}system("pause");return 0;}
0 0
- 华为机试之括号匹配
- 华为机试之括号匹配
- 华为机试练习---括号匹配问题
- 华为机试—括号匹配
- 华为机试——括号匹配
- 华为机试—括号匹配判断[去多余括号]
- 华为编程大赛之括号匹配
- 华为机试 - 判断if语句括号是否匹配
- 华为机试——字符串中括号是否匹配
- 华为机试题二括号的匹配
- 括号匹配——2017华为招聘机试题
- 括号匹配之添加最少括号匹配
- 栈之括号匹配
- 栈之括号匹配
- 数据结构之括号匹配
- 华为的一道括号匹配题目
- 华为上机练习题--括号匹配检测
- 华为机试---字符串匹配
- JS正则表达式的简单使用
- 深度学习第三天
- 深度学习第四天
- Java心得27
- BZOJ 2194(快速傅立叶之二-FFT)
- 华为机试之括号匹配
- 深度学习第五天
- 并查集的简介及其C/C++代码的实现及优化
- Android内存优化(二)-- 分析内存的使用
- Android:Exported receiver does not require permission解决办法
- swift之用runtime实现字典转模型
- socket通信之六:Overlapped I/O 事件通知模型实现的客户/服务器模型
- eclipse和JDK的安装及环境配置
- poj 2312 Battle City