STL版 括号匹配(感觉不如之前自己用数组模拟的跑的快)
数据结构实验之栈四:括号匹配
Time Limit: 1000MS Memory limit: 65536K
题目描述
输入
输出
示例输入
sin(20+10) {[}]
示例输出
yes no
注意:读入的字符串里可能含有空格哦!
#include <iostream> #include <string> #include <stdio.h> #include <string.h> #include <map> #include <stack> #include <deque> //双端队列 #include <queue> #include <algorithm> #include <ctype.h> using namespace std; int main() { char s[100]; int i, j; while(gets(s)!=NULL) { unsigned int len=strlen(s); stack<char>q; for(i=0; i<len; i++) { if(s[i]==‘(‘ || s[i]==‘[‘ ||s[i]==‘{‘) { q.push(s[i]); } else if(s[i]==‘)‘) { if(q.empty() || q.top()!=‘(‘) { q.push(s[i]); } else if(q.top()==‘(‘) { q.pop(); } } else if(s[i]==‘]‘) { if(q.empty() || q.top()!=‘[‘) { q.push(s[i]); } else if(q.top()==‘[‘) { q.pop(); } } else if(s[i]==‘}‘) { if(q.empty() || q.top()!=‘{‘) { q.push(s[i]); } else if(q.top()==‘{‘) { q.pop(); } } } if(q.empty()) printf("yes\n"); else printf("no\n"); } return 0; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。