题目:给你一个包含括号的字符串,判断是否正确。
输入1:equation = "([][]{})"
输出1:true
输入2:equation = "([)]"
输出2:false
思路1:利用栈
代码实现:
#include<iostream>
#include<stack>
#include<string>
using namespace std;
bool Check(string equation)
{
stack<char> s;
for (int i = 0; i < equation.size(); ++i) {
char ch = equation[i];
switch (ch)
{
case '(':
s.push(')'); //输入与ch匹配的字符
break;
case '[':
s.push(']');
break;
case '{':
s.push('}');
break;
default:
if (s.empty() || s.top() != ch) //方便利用与ch相等判断匹配
return false;
s.pop();
break;
}
}
return s.size() == 0;
}
int main()
{
if (Check("[](})"))
cout << "true" << endl;
else
cout << "false" << endl;
return 0;
}
思路2:将当前字符串中可匹配的对删除
箴言录
谨于言而慎于行。