OJ_括号匹配

题干

OJ_括号匹配_第1张图片

C++实现

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 
using namespace std;

int main() {
	stack<char> myStack;
	char strArr[10010] = { 0 };
	scanf("%s", strArr);
	for (int i = 0; strArr[i] != '\0'; i++)
	{
		if (strArr[i] == '<' || strArr[i] == '(' || strArr[i] == '[' || strArr[i] == '{') {
			myStack.push(strArr[i]);
		}
		else if(strArr[i] == '>') {
			if (myStack.empty() || myStack.top() != '<') {
				printf("no\n");
				return 0;
			}
			else {
				myStack.pop();
			}
		}
		else if (strArr[i] == ')') {
			if (myStack.empty() || myStack.top() != '(') {
				printf("no\n");
				return 0;
			}
			else {
				myStack.pop();
			}
		}
		else if (strArr[i] == ']') {
			if (myStack.empty() || myStack.top() != '[') {
				printf("no\n");
				return 0;
			}
			else {
				myStack.pop();
			}
		}
		else if (strArr[i] == '}') {
			if (myStack.empty() || myStack.top() != '{') {
				printf("no\n");
				return 0;
			}
			else {
				myStack.pop();
			}
		}
	}

	if (myStack.empty()) {
		printf("yes\n");
	}
	else {
		printf("no\n");
	}

	return 0;
}

你可能感兴趣的:(数据结构与算法,算法,c语言,数据结构)