zoukankan      html  css  js  c++  java
  • leetCode 20.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.


    思路:题目整体上比較明白,是对括号是否有效做推断,算法上是用栈来实现,单边入栈。配对之后出栈,最后推断栈是否为空。不为空说明最后没有配对完毕。返回false.

    详细代码例如以下:

    public class Solution {
        public boolean isValid(String s) {
            Stack<Character> st = new Stack<Character>();
            char[] ch = s.toCharArray();
            int len = ch.length;
            //假设长度为奇数,肯定无效
            if((len & 1) != 0){
                return false;
            }
            
            for(int i = 0; i < len; i++){
                if(st.isEmpty()){//栈为空,直接入栈
                    st.push(ch[i]);
                }else{//不为空则讨论栈顶元素是否与ch[i]配对。

    配对也出栈 if(isMatch(st.peek(),ch[i])){//是否配对 st.pop();//栈顶元素出栈 }else{ st.push(ch[i]);//不配对入栈 } } } return st.isEmpty(); } //a为栈顶元素,b为字符串最前元素 public static boolean isMatch(char a, char b){ switch(a){ case '(': if(b == ')') return true; else return false; case '{': if(b == '}') return true; else return false; case '[': if(b == ']') return true; else return false; default : return false; } } }



  • 相关阅读:
    博弈论《《转》》
    HDU 2509 Be the Winner
    SORT排序。。
    HDU 356 SNim
    博弈
    KM算法。《转载》以后看。
    jmeter(28)逻辑控制器 之 交替控制器
    jmeter(30)逻辑控制器 之 Switch Controller 暂时不写!
    jmeter(29)逻辑控制器 之 吞吐量控制器
    Shell一个文件并等待完成
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6890564.html
Copyright © 2011-2022 走看看