括号匹配,水死了
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
bool BracketMatch(string s) {
int len = s.length();
char myStack[len];
int pos = 0;
for(int i = 0; i < len; ++ i) {
if(s[i] == '(' || s[i] == '[' || s[i] == '{') {
myStack[pos++] = s[i];
} else if(s[i] == ')') {
pos = pos-1;
if(pos < 0 || myStack[pos] != '(') {
return false;
}
} else if(s[i] == ']') {
pos = pos - 1;
if(pos < 0 || myStack[pos] != '[') {
return false;
}
} else if(s[i] == '}') {
pos = pos - 1;
if(pos < 0 || myStack[pos] != '{') {
return false;
}
}
}
if(pos != 0) {
return false;
}
return true;
}
int main() {
char str[1000];
cout<<"请输入字符串"<<endl;
int choose = 1;
while(choose) {
gets(str);
cout<<str;
if(BracketMatch(str)) {
cout<<"匹配"<<endl;
} else {
cout<<"不匹配"<<endl;
}
cout<<"请选择是否继续输入. 0.不继续 1.继续"<<endl;
cin >> choose;
getchar();
}
return 0;
}