leetCode 20.Valid Parentheses (有效的括号) 解题思路和方法

原创 2015年07月06日 17:21:26
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;
        }
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

【LeetCode-面试算法经典-Java实现】【022-Generate Parentheses(生成括号)】

【022-Generate Parentheses(生成括号)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given n pairs of parentheses, ...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月23日 07:52
  • 2381

leetcode解题思路

转载地址:http://blog.csdn.net/liuxialong/article/details/41941407 收录https://oj.leetcode.com/problem...
  • zr459927180
  • zr459927180
  • 2016年07月26日 09:37
  • 561

leetCode 32.Longest Valid Parentheses (有效的最大括号) 解题思路和方法

Longest Valid Parentheses  Given a string containing just the characters '(' and ')', find the ...
  • xygy8860
  • xygy8860
  • 2015年07月08日 16:26
  • 549

【LeetCode-面试算法经典-Java实现】【020-Valid Parentheses(括号验证)】

【020-Valid Parentheses(括号验证)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a string containing just th...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月22日 07:26
  • 2771

Leetcode解题思路总结(Easy)

近来走上了Leetcode刷题之路,不过刷题背后更重要的是思路,掌握了方法,举一反三融会贯通。故在此我总结每道题的解题思路,按照题目从简单到难的顺序来列举。 292 Nim Game,传说中的一行...
  • luoshengkim
  • luoshengkim
  • 2015年12月17日 17:12
  • 2936

【LeetCode】- Valid Parentheses(有效的括号)

[ 问题: ] Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if ...
  • zdp072
  • zdp072
  • 2014年08月29日 14:49
  • 850

22.Generate Parentheses&n对括号的全部有效组合

Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes...
  • sjt091110317
  • sjt091110317
  • 2015年06月05日 15:51
  • 500

leetcode解题总结(持续更新)

树型:DFS或BFS(不够+状态存储,缩短时间)(如数位DP,就是DFS+状态存储) 链表:多用two pointer 无序数组:hash映射(O(1),map,set等),并查集,字典树tire 有...
  • ChinaJane163
  • ChinaJane163
  • 2016年09月21日 20:53
  • 608

Decode Ways 把字符串解码成数字组合@LeetCode

做这道题还是有很多收获的: 1.为了避免麻烦,开数组时可以开大一些,如int[] ways = new int[len+10]; 2. 这道题实际上是和计算要几步走完台阶的那道题本质是一样的。同样要用...
  • hellobinfeng
  • hellobinfeng
  • 2013年11月24日 05:05
  • 2741

Leetcode刷题记——20. Valid Parentheses (有效的括号即括号匹配)

一、题目叙述: Given a string containing just the characters '(', ')', '{', '}', '[' and ']'...
  • sunshine0_0
  • sunshine0_0
  • 2016年10月25日 13:17
  • 167
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetCode 20.Valid Parentheses (有效的括号) 解题思路和方法
举报原因:
原因补充:

(最多只允许输入30个字)