• LeetCode(20) - Valid Parentheses


      题目要求是这样,给你一串只包含符号的字符串,看看这串符号合不合法。怎么算合法呢?"()()()"和"[{}]()"都算是合法,但"([)]"就不合法了。

      思路很简单,通过上面举的例子,我们可以看出来,一个右括号的出现,其合不合法,取决于最后出现的的左括号能不能对应起来,如果不能对应(如"("和"]"),则返回false。而最后出现的左括号,最优先要被判断,所以只是一个典型的后进先出的例子,这样我们就很容易想到一个后进先出的数据结构——栈。

      代码如下:

      

     1 public class Solution {
     2     public boolean isValid(String s) {
     3         Stack<Character> stack = new Stack<Character>();
     4         for (int i = 0; i < s.length(); i++) {
     5             char c = s.charAt(i);
     6             if (c == '(' || c == '[' || c == '{') {
     7                 stack.push(c);
     8             }
     9             else {
    10                 //注意判断stack是否为空。
    11                 if (stack.isEmpty()) return false;
    12                 char c1 = getAccording(c);
    13                 if (c1 != stack.pop()) return false;
    14             }
    15         }
    16         //如果stack不为空,说明还有左括号留下来。
    17         return stack.isEmpty();
    18     }
    19     
    20     private char getAccording(char c) {
    21         char c1 = ' ';
    22         switch (c) {
    23             case ')': c1 = '('; break;
    24             case ']': c1 = '['; break;
    25             case '}': c1 = '{'; break;
    26         }
    27         return c1;
    28     }
    29 }
  • 相关阅读:
    css引入方式
    HTML标签
    动态导入模块impoerlib
    pymysql连接数据库
    创建数据库表之引擎
    IO多路复用互动聊天,select函数监听
    欧拉筛法求素数个数
    与三角形相关的问题 WITH 有向面积
    时间复杂度的计算
    折半查找
  • 原文地址:https://www.cnblogs.com/kepuCS/p/5272145.html
Copyright © 2020-2023  润新知