原理也很簡單,就是檢測到右括號時,看棧頂是不是對應的左括號,還有就是最後檢查完了之後是不是有多餘的左括號。
Tips: 可以把它整合進你的計算器裏,甚至可以讓計算器自動補齊括號。
#include <iostream>
#include <string>
#include <stack>
using namespace std;
bool paranthesisMatch(string &s)
{
stack<char> aux;//輔助檢查棧
string::iterator itr;//字符串迭代器
bool result=true;
for(itr=s.begin();result && itr!=s.end();++itr)
switch(*itr){
case '(':case '[':case '{':aux.push(*itr);break;
case ')':if(aux.top()=='(') aux.pop();
else result=false;break;
case ']':if(aux.top()=='[') aux.pop();
else result=false;break;
case '}':if(aux.top()=='{') aux.pop();
else result=false;break;
}
if(!aux.empty()) result=false;
return result;
}
int main(int argc, char const *argv[])
{
string s;cin>>s;
cout<<boolalpha<<paranthesisMatch(s)<<endl;
return 0;
}