Java实现用栈判断括号匹配问题
来源:互联网 发布:文明 mac 编辑:程序博客网 时间:2024/05/22 12:15
Stack的用例Parentheses,输入一串括号用栈判断其中的括号是否匹配,例如[()]{()}程序打印true,对于[](则打印false。
思路:
遇到左括号入栈,遇到右括号时先检查栈是否为空,若空则返回false,若不空则弹出栈顶元素看与右括号是否匹配。所有元素处理完后若栈为空则说明匹配成功,否则匹配不成功。
Java代码实现:
import java.util.Scanner;public class Parentheses{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); String s = scanner.next(); System.out.println(isBalanced(s)); } public static boolean isBalanced(String s){ Stack<Character> stack = new Stack<Character>(); for(int i=0;i<s.length();i++){ if(s.charAt(i)=='(' || s.charAt(i)=='[' || s.charAt(i)=='{') stack.push(s.charAt(i)); else if(s.charAt(i)==')'){ if(stack.isEmpty()) return false; if(stack.pop()!='(') return false; //在出栈操作之前应判断栈是否为空 } else if(s.charAt(i)==']'){ if(stack.isEmpty()) return false; if(stack.pop()!='[') return false; } else if(s.charAt(i)=='}'){ if(stack.isEmpty()) return false; if(stack.pop()!='{') return false; } } return stack.isEmpty(); }}
泛型可迭代后进先出栈的API:
public class Stack< Item> implements Iterable< Item>
- Stack() 创建一个空栈
- void push(Item item) 添加一个元素
- Item pop() 删除最近添加的元素
- boolean isEmpty() 判断栈是否为空
- int size() 栈中的元素数量
链表实现的栈,可用于创建任意数据类型的栈:
import java.util.Iterator;public class Stack<Item> implements Iterable<Item>{ private Node first; //栈顶,链表表头 private int N; //元素个数 private class Node{ //定义了结点的嵌套类 Item item; Node next; } public int size(){ return N; } public boolean isEmpty(){ return N==0; } public void push(Item item){ Node oldfirst = first; //保存指向链表的指针 first = new Node(); //创建新结点,原链表引用指向新创建的结点 first.item = item; //为新结点的数据域赋值 first.next = oldfirst; //新结点的指针域指向原链表的首结点 N++; } public Item pop(){ Item item = first.item; first = first.next; N--; return item; } public Iterator<Item> iterator(){ return new ListIterator(); } public class ListIterator implements Iterator<Item>{ private Node current = first; public boolean hasNext(){ return current!=null; } public void remove(){ } public Item next(){ Item item = current.item; current = current.next; return item; } } }
阅读全文
0 0
- Java实现用栈判断括号匹配问题
- java判断括号匹配问题
- java利用栈实现括号()[]匹配问题
- 括号匹配问题,用栈实现
- Java 用栈解决括号匹配问题
- 括号匹配问题--栈实现
- java栈实现括号匹配
- 用 java 判断 括号是否完全匹配
- ACM括号匹配问题(java实现)
- Java 括号匹配问题
- java实现括号匹配
- Java实现括号匹配
- java实现括号匹配
- 括号匹配Java实现
- 用栈实现括号匹配
- 用栈实现括号匹配
- 用栈实现括号匹配
- C++ 用栈实现字符串中括号匹配问题()
- nightmare的开发环境搭建和helloworld
- 顺序表应用2:多余元素删除之建表算法
- Python3.6安装pycrypto2.61
- Bannder2
- HIVE
- Java实现用栈判断括号匹配问题
- java的反射机制(个人理解)
- Merge Sorted Array--LeetCode
- 用两个栈实现队列
- HDU 1372-Knight Moves
- 51nod 1265 四点共面(计算几何)
- netty+protobuf使用netty自带编解码器完成多种协议格式分发
- CS231n的主讲老师Andrej说,要从底层代码开始构建神经网络,而不是仅仅使用框架
- Codeforces Round #435 (Div. 2) C. Mahmoud and Ehab and the xor