zoukankan      html  css  js  c++  java
  • Lintcode423-Valid Parentheses-Easy

    思路:

    数据结构:stack。遍历整个字符串,如果遇到左向括号( [ { 则入栈。如果遇到右向括号时,先检查栈是否为空,为空说明左右向括号数目不一致,返回false;不为空则弹出栈顶元素查看是否和右向括号匹配。遍历完,要return stack.isEmpty(); 确保栈内没有剩余。

    代码:

    public class Solution {
        /**
         * @param s: A string
         * @return: whether the string is a valid parentheses
         */
        public boolean isValidParentheses(String s) {
            Stack<Character> st = new Stack<Character>();
            
            for (int i = 0; i < s.length(); i++) {
                char c = s.charAt(i);
                if (c == '(' || c == '[' || c == '{') {
                    st.push(c);
                }
                if (c == ')' || c == ']' || c == '}') {
                    if (st.isEmpty()) {
                        return false;
                    }
                    char popChar = st.pop();
                    if ( c == ')' && popChar != ')') {
                        return false;
                    } 
                    if ( c == ']' && popChar != ']') {
                        return false;
                    }
                    if ( c == '}' && popChar != '}' ) {
                        return false;
                    }
                }
            }
        return st.isEmpty();
        }
    }

    代码风格优化:String遍历每一个char(line 9) ; 用if-else分支更准确(line 10, 12)

     1 public class Solution {
     2     /**
     3      * @param s: A string
     4      * @return: whether the string is a valid parentheses
     5      */
     6     public boolean isValidParentheses(String s) {
     7         Stack<Character> st = new Stack<Character>();
     8         
     9         for (Character c : s.toCharArray()) {
    10             if (c == '(' || c == '[' || c == '{') {
    11                 st.push(c);
    12             } else {
    13                 if (st.isEmpty()) {
    14                     return false;
    15                 }
    16                 char popChar = st.pop();
    17                 if ( c == ')' && popChar != '(') {
    18                     return false;
    19                 } 
    20                 if ( c == ']' && popChar != '[') {
    21                     return false;
    22                 }
    23                 if ( c == '}' && popChar != '{') {
    24                     return false;
    25                 }
    26             }
    27         }
    28     return st.isEmpty();
    29     }
    30 }
  • 相关阅读:
    【洛谷P3389 【模板】高斯消元法】
    清北学堂培训2019.4.7
    清北学堂培训2019.4.6
    清北学堂培训2019.4.4
    个人对于数论的一点整理
    【洛谷P1134 阶乘问题】
    【洛谷P1313 计算系数】
    【洛谷P2822 组合数问题】
    【NOIP数论内容整理】
    特斯拉全自助驾驶芯片初始Meet Tesla FSD SoC
  • 原文地址:https://www.cnblogs.com/Jessiezyr/p/10665079.html
Copyright © 2011-2022 走看看