括號匹配問題

括號匹配問題,用到了棧

#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main()
{
	string str;
	getline(cin, str);
	stack<char> s;
	for (int i = 0; i < str.length(); i++)
	{
		if (str[i] == '(' || str[i] == '[' || str[i] == '{' || str[i] == '<')
		{
			s.push(str[i]);
		}
		else if (s.size() != 0)
		{

			if (str[i] == ')' && s.top() == '(')
			{
				s.pop();
			}
			else if (str[i] == ']' && s.top() == '[')
			{
				s.pop();
			}
			else if (str[i] == '}' && s.top() == '{')
			{
				s.pop();
			}
			else if (str[i] == '>' && s.top() == '<')
			{
				s.pop();
			}
		}
		else
		{
			cout << 0 << endl;
			return 0;
		}
	}
	if (s.size() == 0)
	{
		cout << 1 << endl;
	}
	else
	{
		cout << 0 << endl;
	}
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章