Java教程

力扣第23题 有效的括号

本文主要是介绍力扣第23题 有效的括号,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

题目描述:

 题目描述是 给定一个字符串 判断是否有效 ;

有效 : 左括号必须用相同类型的右括号闭合

             左括号必须以正确的顺序闭合 。

解题思路:

我的想法是 既然 左括号必须以同类型的右括号闭合  且括号就3种 ()【】 {} 所有  使用一个哈希表 以 右边括号为键 以同类型的左边括号为值 即可 然后使用递归算法 使用一种栈结狗 如果遍历的是右边括号 就会把它放进栈结构中  为什么用栈 是因为 先进后出的特点 当遇到左边括号时 会及时取出刚才的右边括号 如果不同 就为false 然后 return掉即可 如果为同类型的 就继续判断 递归即可 

大体死了就是这样 

献上我的思路图 :

最后附上代码 :

 

package com.code;

import java.util.HashMap;
import java.util.Map;
import java.util.Stack;


public class code_16 {
    public static Map<Character  , Character> map = new HashMap<>();
    public static Stack<Character> stack = new Stack<>();
    public static boolean isOK = false ;
    public static void main(String[] args) {
        map.put('(' ,')');
        map.put('[' ,']');
        map.put('{' ,'}');
        String  str = "()[]{}";
        fun(str , 0);
    }
    private static void fun(String str , int i) {
        if (i == str.length() ){
            System.out.println(isOK);
            return;
        }
        if (str.charAt(i) == '(' || str.charAt(i) == '[' || str.charAt(i)=='{'){
            stack.push(str.charAt(i));
        }else {
            if (!stack.empty()){
                if (str.charAt(i) == map.get(stack.pop())){
                    isOK = true ;
                }else {
                    System.out.println(isOK);
                    return;
                }
            }

        }
        fun(str ,i+1);

    }
}

这篇关于力扣第23题 有效的括号的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!