1 栈的基本使用
例1:LeetCode 20。本题虽然为简单题目但却是很经典的一个问题,在这里因为各处讲解比较多此处直接给出代码:
class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '{' || c =='[' || c == '(') { stack.push(c); }else{ //即解决了当栈为空时弹出会报错的情况,又可以检验了一种不匹配情况 if(stack.isEmpty()) return false; char pop = stack.pop(); //这个使用判断不匹配更适合 if (c == '}' && pop != '{') { return false; }else if (c == ']' && pop != '[') { return false; }else if (c == ')' && pop != '(') { return false; } } } return stack.isEmpty(); } }
与此类似题目有:LeetCode 150、71。
例2:栈与递归 LeetCode 341。这道题目是作为课下练习的,在这里可以做出来然后分析一下作为例题。
0