从键盘输入一个包含有花括号、中括号、小括号的字符串判断括号是否正确匹配输出判断结果。请用Java语言编写
可以使用栈来判断括号是否正确匹配。具体步骤如下:
- 创建一个空栈,用于存放左括号。
- 遍历输入的字符串中的每个字符:
- 如果字符是左括号(花括号、中括号或小括号),将其压入栈中。
- 如果字符是右括号,判断栈是否为空:
- 如果栈为空,则说明右括号没有对应的左括号,括号不匹配,返回false。
- 如果栈不为空,将栈顶的左括号弹出,判断它们是否匹配:
- 如果左括号与右括号不匹配(例如"{]"),括号不匹配,返回false。
- 如果左括号与右括号匹配,则继续遍历下一个字符。
- 遍历结束后,判断栈是否为空:
- 如果栈为空,则所有括号都匹配,返回true。
- 如果栈不为空,则还有左括号没有右括号与之匹配,括号不匹配,返回false。
下面是完整的Java代码实现:
import java.util.Stack;
import java.util.Scanner;
public class BracketMatching {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入包含花括号、中括号、小括号的字符串:");
String str = scanner.nextLine();
boolean isMatching = isBracketMatching(str);
if (isMatching) {
System.out.println("括号匹配");
} else {
System.out.println("括号不匹配");
}
}
public static boolean isBracketMatching(String str) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (ch == '{' || ch == '[' || ch == '(') {
stack.push(ch);
} else if (ch == '}' || ch == ']' || ch == ')') {
if (stack.isEmpty()) {
return false;
}
char top = stack.pop();
if ((ch == '}' && top != '{') || (ch == ']' && top != '[') || (ch == ')' && top != '(')) {
return false;
}
}
}
return stack.isEmpty();
}
}
运行代码,输入包含括号的字符串,即可判断括号是否正确匹配
原文地址: https://www.cveoy.top/t/topic/hOcU 著作权归作者所有。请勿转载和采集!