当前位置:网站首页>括号匹配问题(STL)

括号匹配问题(STL)

2022-07-05 10:19:00 允谦呀

括号匹配问题(STL)

前面写过一个手写栈的实现方式,原理是一样的,现在发一个使用STL写的简洁方式

#include <cstring>
#include <iostream>
#include <stack>
using namespace std;
bool pp(string str,int length){
	stack<char> s;
	for(int i = 0; i < length; i++){
		if(str[i] == '(' || str[i] == '[' || str[i] == '{'){
			s.push(str[i]); //如果是左括号 进栈
		}
		else{
			if(s.empty())
				return false;
			char topElem;
			topElem = s.top(); 
			s.pop(); 
			if(str[i] == ')' && topElem != '(')
				return false;
			if(str[i] == ']' && topElem != '[')
				return false;
			if(str[i] == '}' && topElem != '{')
				return false;
		}
	}
	return s.empty();//判断是否为空栈
}
int main(){
	string str;
	cin >> str;
	if(pp(str,str.size()))
		cout << "匹配成功" << endl;
	else
		cout << "匹配失败" << endl;
	return 0;
}
原网站

版权声明
本文为[允谦呀]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qiangqiang103/article/details/119855043