【LeetCode Easy】020 Valid Parentheses

Easy 020 Valid Parentheses

Description:

「()」 "[]" "{}"三種括號匹配問題,判斷參數字符串是否知足匹配要求
如:「({[]})」 true 「[{})」 false
Note:空串爲true

My Solution:

    • 括號匹配問題是棧的典型應用,遇到左括號,入棧,遇到右括號,看棧頂是不是相應的左括號,若不是,則false
    • 時間複雜度O(n)
    • 代碼以下:
    • public boolean isValid(String s) {
           if(s.length()==0){
               return true;
           }
           Stack<Character> stack = new Stack<>();
           for(char c:s.toCharArray()){
               if(c == '(' || c == '{' || c == '['){
                   stack.push(c);
               }else if(stack.size()==0){
                   return false;
               }
               else if(c == ')' && stack.peek() == '('){
                   stack.pop();
               }else if(c == ']' && stack.peek() == '['){
                   stack.pop();
               }else if(c == '}' && stack.peek() == '{'){
                   stack.pop();
               }else
                   return false;
           }
           if(stack.size() == 0){
               return true;
           }
           return false;
       }

Fast Solution:

  1. 思想是同樣的,不過沒有用棧這個數據結構,而是用了一個定長數組,對於參數s的每一個字符,左括號入數組,右括號就去看數組內存的最後一個字符是不是對應的左括號。
相關文章
相關標籤/搜索