西电复试之——真题2009 E 符号前后匹配

西电复试之——真题2009 E 符号前后匹配

合法符号“(”,“)”,“【”,“】”,“{”,“}”;以上假装都是英文的
用到了栈,相对算符表达式简单很多。
代码应该有bug,没有oj测试,随便看看吧。

#include<iostream>
#include<stack>
#include<string>
using namespace std;

stack<char> s;
int main() {
	int n;
	cin >> n;
	string str;
	int len;
	while (n--) {
		cin >> str;
		len = str.length();
		for (int i = 0; i < len; i++) {
			if (str[i] == '{' || str[i] == '[' || str[i] == '(')
				s.push(str[i]);
			if (str[i] == '}' || str[i] == ']' || str[i] == ')') {
				if (s.empty()) {
					cout << "No" << endl;
					break;
				}
				char c = s.top();
				if (str[i] == '}') {
					if (c != '{') {
						cout << "No" << endl;
						break;
					}
					else
					{
						s.pop();
					}

				}
				if (str[i] == ']') {
					if (c != '[') {
						cout << "No" << endl;
						break;
					}
					else
					{
						s.pop();
					}
				}
				if (str[i] == ')') {
					if (c != '(') {
						cout << "No" << endl;
						break;
					}
					else
					{
						s.pop();
					}
				}
			}
			if (i == len - 1)
				cout << "Yes" << endl;
		}
	}
	return 0;
}
原创文章 35 获赞 17 访问量 1255

猜你喜欢

转载自blog.csdn.net/qq_41436493/article/details/105808592
今日推荐