c++括号匹配

括号匹配是栈最典型的应用了。

思路很简单,就是遇到一个左括号就压栈,遇到一个右括号就弹栈,看是否匹配就好了。最后检查下栈是否为空就行了。

#include <iostream>
#include <stack>
#include <string>

bool paren(const std::string &str)
{
	std::stack<char> s;
	for (auto i = 0; i < str.size();i++)
	{
		switch (str[i])
		{
		case '(':s.push(str[i]); break;
		case '[':s.push(str[i]); break;
		case '{':s.push(str[i]); break;
		case ')':
			if (s.top() != '(')
				return false;
			else
				s.pop(); break;
		case ']':
			if (s.top() != '[')
				return false;
			else
				s.pop(); break;
		case '}':
			if (s.top() != '{')
				return false;
			else
				s.pop(); break;

		default:
			break;
		}
	}
	return s.empty();
}

int main()
{
	std::string strBuf = "()[]{}[()]";
	std::cout << "The string is : " << strBuf<<" ";
	if (paren(strBuf))
		std::cout << "括号匹配";
	else
		std::cout << "括号不匹配";
	std::cout << std::endl;
	return 0;
}
    原文作者:括号匹配问题
    原文地址: https://blog.csdn.net/cdsdtt123/article/details/43955135
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞