Java 括号匹配算法:使用栈判断括号是否匹配
使用栈来判断括号是否正确匹配,可以通过以下步骤实现:\n\n1. 定义一个空栈。\n2. 遍历输入的字符串的每个字符。\n3. 如果字符是左括号(包括{,[,(),则将其压入栈中。\n4. 如果字符是右括号(包括},],)),则判断栈是否为空。如果栈为空,则括号不匹配,直接返回false。如果栈不为空,则弹出栈顶元素并判断是否与当前右括号匹配。如果不匹配,则括号不匹配,直接返回false。\n5. 遍历完所有字符后,判断栈是否为空。如果栈为空,则括号匹配,返回true;否则,括号不匹配,返回false。\n\n以下是相应的Java代码实现:\n\njava\nimport java.util.*;\n\npublic class BracketMatching {\n public static boolean isBracketMatching(String str) {\n Stack<Character> stack = new Stack<>();\n\n for (char ch : str.toCharArray()) {\n if (ch == '{' || ch == '[' || ch == '(') {\n stack.push(ch);\n } else if (ch == '}' || ch == ']' || ch == ')') {\n if (stack.isEmpty()) {\n return false;\n }\n char top = stack.pop();\n if ((ch == '}' && top != '{') || (ch == ']' && top != '[') || (ch == ')' && top != '(')) {\n return false;\n }\n }\n }\n\n return stack.isEmpty();\n }\n\n public static void main(String[] args) {\n Scanner scanner = new Scanner(System.in);\n System.out.print("请输入包含有花括号{}、中括号[]、小括号()的字符串:");\n String str = scanner.nextLine();\n boolean isMatching = isBracketMatching(str);\n if (isMatching) {\n System.out.println("括号匹配");\n } else {\n System.out.println("括号不匹配");\n }\n scanner.close();\n }\n}\n\n\n这段代码首先使用Scanner类从键盘读取输入的字符串,然后调用isBracketMatching方法进行括号匹配判断,并输出结果。
原文地址: https://www.cveoy.top/t/topic/pqqY 著作权归作者所有。请勿转载和采集!