栈应用—字符串括号匹配问题

2021/4/13 18:55:41

本文主要是介绍栈应用—字符串括号匹配问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

利用栈,可以解决一些算法问题,比如括号匹配、逆波兰表达式...

以下demo,解决括号匹配问题:

BracketStr.java

/**
 * @Author: ltx
 * @Description: 栈应用-字符串括号匹配问题
 */
public class BracketStr {
    private static Boolean isValid(String str) {
        //拆成char[]
        char[] chars = str.toCharArray();
        Stack<Character> left = new Stack<>();
        for (Character ch : chars) {
            //遇左括号,放入栈中
            if (ch.equals('{') || ch.equals('(') || ch.equals('[')) {
                left.push(ch);
            }
            //遇右括号,先判空,然后判断成对,不成对的则为不匹配
            if (ch.equals('}') || ch.equals(')') || ch.equals(']')) {
                //判断栈空
                if (left.isEmpty()) {
                    return false;
                }
            }
            //判断成对
            if (ch.equals('}')) {
                if (!left.pop().equals('{')) {
                    return false;
                }
            }
            if (ch.equals(')')) {
                if (!left.pop().equals('(')) {
                    return false;
                }
            }
            if (ch.equals(']')) {
                if (!left.pop().equals('[')) {
                    return false;
                }
            }
        }
        //判断栈空
        if (left.isEmpty()) {
            return true;
        }
        return false;
    }

    public static void main(String[] args) {
//        String str = "kh(((we)w(fwe)(456)[34][{{66555}}]56))6655";
//        String str = "sagjhsjakldgh2357465768";
//        String str = "[][]()(){}";
        String str = "we[]sd12[]23()]we(546456)dd{r6789679}";
        System.out.println(isValid(str));
    }
}

 



这篇关于栈应用—字符串括号匹配问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程