从键盘输入一个包含有花括号、中括号、小括号的字符串判断括号是否正确匹配输出判断结果。用Java
可以使用栈来判断括号是否正确匹配。
具体步骤如下:
- 创建一个空栈。
- 读取输入的字符串中的每个字符,如果是左括号(花括号、中括号、小括号),则将其压入栈中。
- 如果是右括号(花括号、中括号、小括号),则检查栈是否为空。如果栈为空,则括号不匹配,输出结果为不匹配。
- 如果栈不为空,则取出栈顶元素。
- 如果栈顶元素与当前字符匹配,则继续读取下一个字符。
- 如果栈顶元素与当前字符不匹配,则括号不匹配,输出结果为不匹配。
- 重复步骤3和4,直到字符串中的所有字符都被处理。
- 如果栈为空,则括号匹配,输出结果为匹配。如果栈不为空,则括号不匹配,输出结果为不匹配。
以下是Java代码的实现:
import java.util.*;
public class BracketMatching {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入包含花括号{}、中括号[]、小括号()的字符串:");
String str = scanner.nextLine();
boolean isMatched = checkBracketMatching(str);
if (isMatched) {
System.out.println("括号匹配");
} else {
System.out.println("括号不匹配");
}
}
public static boolean checkBracketMatching(String str) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c == '{' || c == '[' || c == '(') {
stack.push(c);
} else if (c == '}' || c == ']' || c == ')') {
if (stack.isEmpty()) {
return false;
}
char top = stack.pop();
if ((c == '}' && top != '{') || (c == ']' && top != '[') || (c == ')' && top != '(')) {
return false;
}
}
}
return stack.isEmpty();
}
}
运行程序,输入字符串后,即可判断括号是否正确匹配
原文地址: http://www.cveoy.top/t/topic/hNv4 著作权归作者所有。请勿转载和采集!