STL解决括号匹配问题
输入
由括号构成的字符串,包含”(“、”)“、”[“和”]“。
输出
如果匹配输出YES,否则输出NO。
样例输入
[([][]())]
样例输出
YES
// 12括号匹配问题.cpp: 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <string>
#include <vector>
#include <map>
#include <iostream>
using namespace std;int main()
{vector<char> Stack;map<char,char> map1;int i = 0;int weight = 0;char pop;string data;map1.insert(pair<char, char>('[',']'));map1.insert(pair<char, char>('(',')'));map1.insert(pair<char, char>('{', '}'));cin >> data;while (i < data.length()) {if (data[i]=='(' || data[i]=='[' || data[i] == '{') {Stack.push_back(data[i]);}else {if (Stack.size()) {pop = Stack.back();Stack.pop_back();if (data[i] != map1[pop]) {break;}}else {cout << "NO";return 0;}}i++;}if (Stack.size()!=0) {cout << "NO";}else {cout << "YES";}return 0;
}