栈的介绍和简单应用(一)

什么是栈

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 }
原文地址:https://www.cnblogs.com/qiaorui/p/12739812.html