有效的括号(Java实现)

简介: 有效的括号(Java实现)

有效的括号(Java实现)


题目:

给定一个只包括'(',')','{','}','[',']'字符串,判断字符串是否有效。

有效字符串需满足:


  • 左括号必须用相同类型的右括号闭合。
  • 左括号必须以正确的顺序闭合。
  • 注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
输出: false
示例 4:
输入: "([)]"
输出: false
示例 5:
输入: "{[]}"
输出: true


显然这就是栈的应用,入栈的元素如果和栈顶的元素配对,那么就栈顶出栈;判断下一个元素。

代码实现之:

package Day47;
import java.util.Scanner;
import java.util.Stack;
/**
 * @Author Zhongger
 * @Description 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
 * 有效字符串需满足:
 * 左括号必须用相同类型的右括号闭合。
 * 左括号必须以正确的顺序闭合。
 * 注意空字符串可被认为是有效字符串。
 * @Date 2020.3.20
 */
public class IsValidSolution {
    public static void main(String[] args) {
        IsValidSolution isValidSolution = new IsValidSolution();
        Scanner input = new Scanner(System.in);
        String s=input.nextLine();
        System.out.println(isValidSolution.isValid(s));
    }
    public boolean isValid(String s) {
        if (s==null){
            return false;
        }
        if (s.length()==0){
            return true;
        }
        Stack<Character> stack = new Stack<>();
        for (char c : s.toCharArray()) {
            if (stack.isEmpty()){
                stack.push(c);
                continue;
            }
            Character peekChar = stack.peek();
            if (c=='('){
                if (peekChar==')'){
                    stack.pop();
                }else {
                    stack.push(c);
                }
            } else if (c==')') {
                if (peekChar=='('){
                    stack.pop();
                }else {
                    stack.push(c);
                }
            } else if (c=='{') {
                if (peekChar=='}'){
                    stack.pop();
                }else {
                    stack.push(c);
                }
            } else if (c=='}'){
                if (peekChar=='{'){
                    stack.pop();
                }else {
                    stack.push(c);
                }
            } else if (c=='['){
                if (peekChar==']'){
                    stack.pop();
                }else {
                    stack.push(c);
                }
            } else if (c==']'){
                if (peekChar=='['){
                    stack.pop();
                }else {
                    stack.push(c);
                }
            }
        }
        if (stack.isEmpty()){
            return true;
        }
        return false;
    }
}


相关文章
|
4月前
|
存储 Java 索引
使用java代码实现左右括号查找
使用java代码实现左右括号查找
|
7月前
|
算法 Java C语言
【经典算法】LeetCode 20:有效的括号(Java/C/Python3实现含注释说明,Easy)
【经典算法】LeetCode 20:有效的括号(Java/C/Python3实现含注释说明,Easy)
57 1
|
8月前
|
C++ Rust NoSQL
Rust 数据类型 之 类C枚举 c-like enum
Rust 数据类型 之 类C枚举 c-like enum
71 0
Rust 数据类型 之 类C枚举 c-like enum
|
8月前
|
算法 Python Java
Java每日一练(20230429) 二叉树后序遍历、删除无效括号、合并有序链表
Java每日一练(20230429) 二叉树后序遍历、删除无效括号、合并有序链表
52 0
Java每日一练(20230429) 二叉树后序遍历、删除无效括号、合并有序链表
|
8月前
|
Python Java 算法
Java每日一练(20230402) 有效括号、二叉树前序遍历、全排列
Java每日一练(20230402) 有效括号、二叉树前序遍历、全排列
50 0
Java每日一练(20230402) 有效括号、二叉树前序遍历、全排列
|
8月前
|
Python Java Go
Java每日一练(20230401) 合并K个升序链表、最长有效括号、分割回文串
Java每日一练(20230401) 合并K个升序链表、最长有效括号、分割回文串
52 0
Java每日一练(20230401) 合并K个升序链表、最长有效括号、分割回文串
|
8月前
|
Java
|
8月前
|
Java
Java括号匹配
Java括号匹配
49 0
|
8月前
|
Java
括号匹配问题使用Java实现~
括号匹配问题使用Java实现~
|
8月前
|
Java
22. 括号生成 --力扣 --JAVA
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
70 0