栈的介绍和简单应用(一)
什么是栈
1、栈只能从表的一端存取数据,另一端是封闭的
2、栈是一种只能从表的一端存取数据且遵循 "先进后出" 原则的线性存储结构
3、通常,栈的开口端被称为栈顶;相应地,封口端被称为栈底。
简单应用
力扣第20题用可以很好的用栈这种数据结构来解决,提目请去力扣官网看。这就不给出了 https://leetcode-cn.com/
false。匹配就一直循环这个步骤。最后只要栈为空栈就返回true。
当有 右括号和栈顶的元素比较看匹配不。不匹配就直接返回
java代码
1 class Solution { 2 public static void main(String[] args) { 3 System.out.println((new Solution()).isValid("()[]{}")); 4 System.out.println((new Solution()).isValid("([)]")); 5 } 6 public boolean isValid(String s) { 7 Stack<Character> stack = new Stack<Character>(); 8 char[] chars = s.toCharArray(); 9 for (int i = 0; i < chars.length; i++) { //左括号入栈 10 char c = chars[i]; 11 if (c == '(' || c == '[' || c == '{') { 12 stack.push(chars[i]); 13 } else { //右括号作判断 14 if (stack.isEmpty()) { 15 return false; 16 } 17 char topChar = stack.pop(); 18 if (c == ')' && topChar != '(') 19 return false; 20 if (c == ']' && topChar != '[') 21 return false; 22 if (c == '}' && topChar != '{') 23 return false; 24 } 25 } 26 return stack.isEmpty(); //看是否为空 27 } 28 }