Java Stack 类
栈是Vector的一个子类,它实现了一个标准的后进先出的栈。
堆栈只定义了默认构造函数,用来建立一个空栈。java
经常使用方法
1 boolean empty()
测试堆栈是否为空。ide
2 Object peek( )
查看堆栈顶部的对象,但不从堆栈中移除它。函数
3 Object pop( )
移除堆栈顶部的对象,并做为此函数的值返回该对象。测试
4 Object push(Object element)
把项压入堆栈顶部。code
5 int search(Object element)
返回对象在堆栈中的位置,以 1 为基数。对象
题目:element
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需知足: 一、左括号必须用相同类型的右括号闭合。 二、左括号必须以正确的顺序闭合。 三、注意空字符串可被认为是有效字符串。 如:"(([]){})"
题解:字符串
import java.util.ArrayList; import java.util.HashMap; import java.util.Stack; public class TestHashMapBoolean { public static boolean isValid(String s) { HashMap<Character,Character> ss = new HashMap<Character,Character>(); ss.put('(',')'); ss.put('{','}'); ss.put('[',']'); HashMap<Character,Boolean> sbool = new HashMap<Character,Boolean>(); sbool.put('(',true); sbool.put('{',true); sbool.put('[',true); sbool.put(')',false); sbool.put('}',false); sbool.put(']',false); ArrayList<Character> sList=new ArrayList<Character>(); for(int i=0; i<s.length();i++){ sList.add(s.charAt(i)); } if(sList.size() == 0){ return true; } Stack<Character> stack = new Stack<Character>(); for(int i=0; i<sList.size();i++){ if(stack.empty()) { stack.push(sList.get(i)); }else if (sbool.get(stack.peek()) && ss.get(stack.peek()).equals(sList.get(i))) { stack.pop(); }else { stack.push(sList.get(i)); } } return stack.size() == 0 ? true:false; } public static void main(String[] args) { System.out.println(isValid("(([]){})")); } }