首页 > 代码库 > STL版 括号匹配(感觉不如之前自己用数组模拟的跑的快)
STL版 括号匹配(感觉不如之前自己用数组模拟的跑的快)
数据结构实验之栈四:括号匹配
Time Limit: 1000MS Memory limit: 65536K
题目描述
给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。
输入
输入数据有多组,处理到文件结束。
输出
如果匹配就输出“yes”,不匹配输出“no”
示例输入
sin(20+10){[}]
示例输出
yesno
注意:读入的字符串里可能含有空格哦!
#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;}
STL版 括号匹配(感觉不如之前自己用数组模拟的跑的快)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。