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