刷題第三天,根本就沒用過堆棧,刷題刷到了,看了一下,知道點了,這回用一用哈哈哈 ----- 20. Valid Parentheses

棧最典型的應用就是驗證配對狀況,注意事項:棧在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,並進行使用字符

相關文章
相關標籤/搜索