zoukankan      html  css  js  c++  java
  • 栈的介绍和简单应用(一)

    什么是栈

    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 }
  • 相关阅读:
    POJ
    Fence Repair POJ
    COGS 2096. 不平凡的许愿树
    COGS 2095. 不平凡的引线
    BZOJ 4392 卡牌游戏
    COGS 2089. 平凡的测试数据
    Slim Span (最小生成树)
    【BZOJ1294】[SCOI2009]围豆豆Bean 射线法+状压DP+SPFA
    排列perm HYSBZ
    I
  • 原文地址:https://www.cnblogs.com/qiaorui/p/12739812.html
Copyright © 2011-2022 走看看