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;
}