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;
        }
    }
}

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

时间: 2024-12-28 12:07:30

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

[LeetCode]20 Valid Parentheses 有效的括号

[LeetCode]20 Valid Parentheses 有效的括号 Description Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. An input string is valid if: Open brackets must be closed by the same type of brac

leetCode 36.Valid Sudoku(有效的数独) 解题思路和方法

Valid Sudoku Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be partially filled, where empty cells are filled with the character '.'. A partially filled sudoku which is valid. Note: A valid Sudoku boa

LeetCode:Valid Parentheses - 合理的括号搭配

1.题目名称 Valid Parentheses(合理的括号搭配) 2.题目地址 https://leetcode.com/problems/valid-parentheses/ 3.题目内容 英文:Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the

leetCode 20. Valid Parentheses 字符串

20. 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 "(]&quo

Java [leetcode 20]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 "([)

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

Longest Valid Parentheses Given a string containing just the characters '(' and ')', find the length of the longest valid (well-formed) parentheses substring. For "(()", the longest valid parentheses substring is "()", which has length

LeetCode #20 Valid Parentheses (E)

[Problem] 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 "

leetcode 20 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 "([)]"

LeetCode 20 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 "([)]&