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("(([]){})")); } }