文章
7
粉丝
56
获赞
0
访问
3.8k
Java代码处理括号匹配:数据结构经典例题。
本应该用栈实现,但实际Java官网鼓励用ArrayDeque队列实现,且其内置也有push()和pop()方法
import java.util.ArrayDeque;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
ArrayDeque<Character> deque = new ArrayDeque<>();
char[] inChars = in.nextLine().toCharArray();
boolean flag = true; // 标志YES或NO
for (int i = 0; i < inChars.length; i++) {
if (inChars[i] == '(' || inChars[i] == '[') { // 左括号压入栈中
deque.push(inChars[i]); // 此处即addFirst()方法
}else {
if (deque.isEmpty()) { // 栈为空则不可调用pop方法,否则报错异常。此处应直接设置为false
flag = false;
break;
}
char lastChar = deque.pop();
if (inChars[i] == ')' && lastChar != '(') { // 若情况不满足,直接置false且break
flag = false;
...
登录后发布评论
暂无评论,来抢沙发