leetcode 20
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 20相关的知识,希望对你有一定的参考价值。
判断括号的顺序是否正确;
思路:用一个堆栈来存储符号序列,按照符号匹配规则进行堆栈操作;
前括号一律入栈,后括号如果跟栈顶符号匹配,栈顶符号出栈如果,若不匹配则返回false;
最后栈为空返回true,否则返回false;
代码如下:
1 class Solution { 2 public: 3 bool isValid(string s) { 4 int n = s.length(); 5 if(n%2 != 0) 6 { 7 return false; 8 } 9 vector<char> stack; 10 if(s[0] != \'(\' && s[0] != \'[\' && s[0] != \'{\') 11 { 12 return false; 13 } 14 else 15 { 16 stack.push_back(s[0]); 17 } 18 int j = 1; 19 for(int i = 1; i < n; ++i) 20 { 21 if(s[i] == \'(\' || s[i] == \'[\' || s[i] == \'{\') 22 { 23 stack.push_back(s[i]); 24 } 25 else if(s[i] == \')\') 26 { 27 if(stack.back() == \'(\') 28 { 29 stack.pop_back(); 30 } 31 else 32 { 33 return false; 34 } 35 } 36 else if(s[i] == \']\') 37 { 38 if(stack.back() == \'[\') 39 { 40 stack.pop_back(); 41 } 42 else 43 { 44 return false; 45 } 46 } 47 else if(s[i] == \'}\') 48 { 49 if(stack.back() == \'{\') 50 { 51 stack.pop_back(); 52 } 53 else 54 { 55 return false; 56 } 57 } 58 } 59 if(stack.empty()) 60 { 61 return true; 62 } 63 else 64 { 65 return false; 66 } 67 } 68 };
以上是关于leetcode 20的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode810. 黑板异或游戏/455. 分发饼干/剑指Offer 53 - I. 在排序数组中查找数字 I/53 - II. 0~n-1中缺失的数字/54. 二叉搜索树的第k大节点(代码片段