isValid-链接
实现的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| class Solution { public: bool isValid(string s) { stack<char> arr; for (int i = 0; i < s.size(); i++) { char m; //如果是左边的括号的话就入栈 if (s[i] == '(' || s[i] == '[' || s[i] == '{') { arr.push(s[i]); } //如果是右边的括号的话进行相应的匹配 else if(s[i]==')'){ //首先要保证栈不为空 if(!arr.empty()) { //如果栈顶的值与之对应相匹配,弹栈 if(arr.top()=='(') arr.pop(); //否则返回false else return false; } else return false; } else if(s[i]==']'){ if(!arr.empty()) { if(arr.top()=='[') arr.pop(); else return false; } else return false; } else if(s[i]=='}'){ if(!arr.empty()) { if(arr.top()=='{') arr.pop(); else return false; } else return false; } } //最后如果栈不为空,说明没有匹配所有的括号,则返回false if (!arr.empty()) return false; else return true; } };
|
其实这就是一道括号匹配问题的题,就是个板子……如果你对栈这个数据结构不了解的话,可以去看看相关的知识