• LeetCode: Valid Parentheses 解题报告


    Valid Parentheses

    Given a string containing just the characters '('')''{''}''[' and ']', determine if the input string is valid.

    The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

    SOLUTION1:

    使用stack来解决的简单题目。所有的字符依次入栈

    1. 遇到成对的括号弹栈,弹栈不成对返回false.

    2. 栈为空只能压入左括号

    3. 扫描完成时,栈应该为空,否则返回FALSE.

    View Code

    SOLUTION 2:

    使用堆栈解决,比较简单。push右括号时,检查左括号在不在,如果不在,返回false,否则弹出一个左括号。

    最后看栈是否为空,不为空代表括号数不对称,也要返回false;

     1 public class Solution {
     2     public boolean isValid(String s) {
     3         if (s == null) {
     4             return false;
     5         }
     6         
     7         int len = s.length();
     8         
     9         // bug 1: don't use s as the name of the stack.
    10         Stack<Character> stk = new Stack<Character>();
    11         
    12         for (int i = 0; i < len; i++) {
    13             char c = s.charAt(i);
    14             switch(c) {
    15                 case '(':
    16                 case '[':
    17                 case '{':
    18                     stk.push(c);
    19                     break;
    20                 case ')':
    21                     if (!stk.isEmpty() && stk.peek() == '(') {
    22                         stk.pop();
    23                     } else {
    24                         return false;
    25                     }
    26                     break;
    27                 case '}':
    28                     if (!stk.isEmpty() && stk.peek() == '{') {
    29                         stk.pop();
    30                     } else {
    31                         return false;
    32                     }
    33                     break;
    34                 case ']':
    35                     if (!stk.isEmpty() && stk.peek() == '[') {
    36                         stk.pop();
    37                     } else {
    38                         return false;
    39                     }
    40                     break;    
    41             }
    42         }
    43         
    44         return stk.isEmpty();
    45     }
    46 }
    View Code

    https://github.com/yuzhangcmu/LeetCode_algorithm/blob/master/stack/IsValid.java

  • 相关阅读:
    5.常见类和API
    4.异常
    3.面向对象
    2.控制语句和数组
    1.初始java 数据类型 运算符
    C#设计模式——桥接模式
    C#设计模式——适配器模式
    C#设计模式——原型模式
    C#设计模式——建造者模式
    C#设计模式——抽象工厂模式
  • 原文地址:https://www.cnblogs.com/yuzhangcmu/p/4202351.html
Copyright © 2020-2023  润新知