棧最典型的應用就是驗證配對狀況,注意事項:棧在peek(查看堆棧頂部的對象,但不從堆棧中移除它)、pop(移除堆棧頂部的對象,並做爲此函數的值返回該對象)操做前都要驗證非空,不然會報錯StatckEmptyException。函數
棧的方法:測試
E push(E item) 把項壓入堆棧頂部。 對象
E pop() 移除堆棧頂部的對象,並做爲此函數的值返回該對象。 it
E peek() 查看堆棧頂部的對象,但不從堆棧中移除它。 io
boolean empty() 測試堆棧是否爲空。 class
int search(Object o) 返回對象在堆棧中的位置,以 1 爲基數。循環
-------------------------------------------------分割線-----------------------------------------------------方法
class Solution {
public boolean isValid(String s) {
//驗證符號是否成對出現
if(s.length() % 2 != 0) return false;
Stack<Character> stack = new Stack<Character>();
for(char c : s.toCharArray()){
if(c == '('){
stack.push(')');
}else if(c == '{'){
stack.push('}');
}else if(c == '['){
stack.push(']');
}else if(stack.empty() || stack.pop() != c){
return false;
}
}
return stack.empty();
}
}總結
總結:主要在stack.isEmpty() || stack.pop() != c中,當輸入「()」時,‘(’入棧,當‘)’時,先判斷當前棧是否爲空,返回false,而後棧頂移除字符,當字符與‘)’不相同時返回false,循環結束,返回最後結果。我是看LeetCode答案了,要否則我寫不出來,這道題挺好的,讓我瞭解了Stack,並進行使用字符