Valid Parentheses
2015-06-05 21:26
316 查看
为了在运行中避免可能出现的危险,即当string emuStack为空,emuStack.begin()和emuStack.end()是什么。采取的策略是先将emuStack重置为非空,再进行其他操作,这样就永远不可能碰到底部。
#include<iostream> #include<string> using namespace std; class Solution { public: bool isValid(string s) { if(s.size() == 0) return true; string emuStack = "s"; string::iterator iter1 = s.begin(); string::iterator iter2 = emuStack.begin(); for(; iter1 != s.end(); iter1++) { if(*iter1 == '}') { if(*iter2 == '{') { emuStack.erase(iter2); iter2 = emuStack.end() - 1; continue; } } if(*iter1 == ']') { if(*iter2 == '[') { emuStack.erase(iter2); iter2 = emuStack.end() - 1; continue; } } if(*iter1 == ')') { if(*iter2 == '(') { emuStack.erase(iter2); iter2 = emuStack.end() - 1; continue; } } if((*iter1 == '{') || (*iter1 == '}') || (*iter1 == '[') || (*iter1 == ']') || (*iter1 == '(') || (*iter1 == ')')) { emuStack += *iter1; iter2 = emuStack.end() - 1; } } //cout << emuStack << endl; if(emuStack.size() == 1) //cout << "valid" << endl; return true; else //cout << "no valid" << endl; return false; //getchar(); //return 1; } }; int main() { //string s = "a{b[c(d)e]f}g"; string s = "]"; Solution solution; cout << solution.isValid(s) << endl; getchar(); return 1; }
相关文章推荐
- AVL树旋转操作图解
- IO系统
- HDU 不容易系列之(4)——考新郎
- 【教材】 用Cheat Engine查找特殊码(简易版)
- Tomcat安全配置及优化
- HDU 钥匙计数之一
- 弗罗贝尼乌斯范数(Frobenius norm)
- 【HDU】1402 A * B Problem Plus 【FFT】
- 指针函数和函数指针
- SYNONYMS
- Codeforces Round #306 (Div. 2) B(dfs)
- HDU 计算直线的交点数
- VNR共享辞书指南 Shared Dictionary Tutorial
- 【转】解决eclipse连接不到genymotion的问题
- Android学习日记(3)
- 处理数据库Null值
- JSP运行机制
- Android不同方式启动导致重复启动相同的Activity的问题解决办法(转载,解决了我的问题)
- 动作回调函数 (CallFunc,CallFuncN,CCCallFuncND)
- ActionScript 3.0 学习(二) Flash Builder找不到所需版本的Adobe Flash Player