栈 || 括号匹配(基础版)
来源:互联网 发布:mac 抹掉磁盘步骤 编辑:程序博客网 时间:2024/06/01 08:34
#include <iostream>#include <cstdio>#include <stack>#include <map>using namespace std;map<char,char> m;/** 括号匹配的四种可能性: ①左右括号配对次序不正确 ②右括号多于左括号 ③左括号多于右括号 ④左右括号匹配正确*/void init(){ m[']'] = '['; m['}'] = '{'; m[')'] = '(';}int check(char c){ if( c=='(' || c=='{' ||c=='[' ) return 1; else if( c==')' || c=='}' ||c==']') return 2; return 0;}bool brackets(string str){ int len = str.length(); stack<char> s; for( int i =0 ; i < len; ++i ) { int t = check(str[i]); if( t == 0) continue; else if( t==1 ) s.push(str[i]); else { if( s.empty() || (s.top()!=m[str[i]]) )//右括号多或者栈顶不匹配 return false; else s.pop();//栈顶匹配 } } if( s.empty()) return true;//完全匹配 return false;//左括号多}int main(){ init(); string s; while(cin>>s) { if(brackets(s)) puts("Yes"); else puts("No"); } return 0;}
0 0
- 栈 || 括号匹配(基础版)
- 括号匹配(栈)
- 括号匹配(栈)
- 括号匹配(栈)
- 括号匹配 (简易版) 栈
- 【基础练习】【栈】codevs2058 括号匹配题解
- 括号匹配(栈实现)
- 括号匹配(栈操作)
- 括号匹配(栈练习)
- 最长括号匹配(栈)
- 括号匹配——栈的基础应用1
- 【基础练习】【栈】【映射】codevs3543 括号匹配题解
- 区间dp基础(石子归并,括号匹配,整数划分。。。)
- java版 利用栈实现括号匹配
- 判括号匹配(顺序栈)
- 括号匹配(一) 栈的应用
- POJ1068--括号匹配(栈的应用)
- Parentheses Balance(括号匹配)--栈
- 近期健康类(***)
- Makefile中关于all和.PHONY
- 路由器的基本设置
- 最简单的使用OVS和控制器做路由的方法
- 理解距离矢量路由
- 栈 || 括号匹配(基础版)
- linux 正则表达式
- uva_12069_Robots inside the Labyrinth_TLE
- 算法:最长公共子序列
- hdu4121/poj 4001 Xiangqi(模拟)
- UDP套接口编程
- MYSQL用户操作
- 柴俊理金:加息再起美指反击,金银沥青上涨受限
- oracle 用函数查询怎么直接返回一个表