package step2; import java.util.Scanner; import java.util.Stack; // Java Stack<E> 类 // 栈是Vector的一个子类,它实现了一个标准的后进先出的栈。 // 栈只定义了默认构造函数,用来创建一个空栈。 栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。 // // boolean empty() 测试堆栈是否为空。 // Object peek( ) 查看堆栈顶部的对象,但不从堆栈中移除它。 // Object pop( ) 移除堆栈顶部的对象,并作为此函数的值返回该对象。 // Object push(Object element) 把项压入堆栈顶部。 // int search(Object element) 返回对象在堆栈中的位置,以 1 为基数。 public class Bracket_Match { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); check(str); } public static void check(String str) { Stack<Character> stack = new Stack<Character>(); // 如果该String长度为奇数,不匹配 if (str.length() % 2 == 1) { System.out.println("No"); } else { //************begin ************* //************* end ************* } } }补充代码
时间: 2023-07-07 15:44:54 浏览: 74
好的,以下是利用栈实现括号匹配的Java代码,你可以将其添加到 `//************begin*************` 和 `//*************end*************` 之间:
```java
public static void check(String str) {
Stack<Character> stack = new Stack<Character>();
// 如果该String长度为奇数,不匹配
if (str.length() % 2 == 1) {
System.out.println("No");
} else {
for(int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if(c == '(' || c == '[' || c == '{') {
stack.push(c);
} else if(c == ')' && !stack.isEmpty() && stack.peek() == '(') {
stack.pop();
} else if(c == ']' && !stack.isEmpty() && stack.peek() == '[') {
stack.pop();
} else if(c == '}' && !stack.isEmpty() && stack.peek() == '{') {
stack.pop();
} else {
System.out.println("No");
return;
}
}
if(stack.isEmpty()) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
```
遍历字符串,如果遇到左括号,将其入栈;如果遇到右括号,判断栈顶元素是否与之匹配,若匹配则将其弹出栈,否则说明不匹配;最后,若栈为空,则说明括号匹配成功,否则说明括号匹配失败。
阅读全文