1

分享

20. Valid Parentheses (C++)

20. Valid Parentheses有效括號、LeetCode、堆疊stack
【筆記】

堆疊stack

  • 類似班上選幹部的概念,後提名先表決
  • 堆疊為後進先出,永遠都從上層開始拿
筆記 leetcode c語言

堆疊stack

  • 標頭檔
  

#include <stack>

  • 初始化
  

stack<type> mystack;

備註:type (int、float、char......)

  • 增加元素(從頂端推入元素)
  

mystack.push(元素);

  • 移除元素(從頂端移除元素)
  

mystack.pop(元素);

  • 頂端元素
  

mystack.top();

  • 元素數量
  

mystack.size();

  • 判斷是否為空
  

mystack.empty();

20. Valid Parentheses

題目:給定字符串'(' ,  ')' ,  '{' ,  '}' ,  '[' and ']',判斷是否有效。
  • 括號必須由相同類型的括號封閉。 
  • 左括號必須以正確的順序關閉。
例如1:
  

"{[]}"

True

例如2:
  

"()[]{}"

True

例如3:
  

"([){]}"

False

例如4:
  

"]"

False

Code(vector)

  

#include <iostream>

#include <vector>

using namespace std;

int main () {

        string s = "{[]}";

        // s = "()[]{}";

        // s = "]";

        vector<char> v;

        for(int i=0; i<s.length(); i++){

                if(s[i] == '(' || s[i] == '{' ||s[i] == '['){

                        v.push_back(s[i]);

               }

                else if(v.size() != 0 && v.back() == '(' && s[i] == ')'){

                        v.pop_back();

                }

                else if(v.size() != 0 && v.back() == '{' && s[i] == '}'){

                        v.pop_back();

                }

                else if(v.size() != 0 && v.back() == '[' && s[i] == ']'){

                       v.pop_back();

                }

                else{

                        cout<<"false"<<endl;

                }

        }

        if(v.size() != 0){

                cout<<"false"<<endl;

        }

        cout<<"true"<<endl;

}

筆記 leetcode c語言

std::vector

Output

  

true


Code(堆疊stack)

  

#include <iostream>

#include <stack>

using namespace std;

int main () {

    string s = "{[]}";

    // s = "()[]{}";

    // s = "]";

    stack<char> mystack;

    for(int i=0; i<s.length(); i++){

        if(s[i] == '(' || s[i] == '{' ||s[i] == '['){

                mystack.push(s[i]);

        }

        else if(mystack.size() != 0 && mystack.top() == '(' && s[i] == ')'){

            mystack.pop();

        }

        else if(mystack.size() != 0 && mystack.top() == '{' && s[i] == '}'){

            mystack.pop();

        }

        else if(mystack.size() != 0 && mystack.top() == '[' && s[i] == ']'){

            mystack.pop();

        }

        else{

            cout<<"false"<<endl;

        }

    }

    if(mystack.size() != 0){

        cout<<"false"<<endl;

    }

    cout<<"true"<<endl;

}

筆記 leetcode c語言

std::stack

Output

  

true

參考資料

[1]. Valid Parentheses - LeetCode
[2]. LeetCode #20 - Valid Parentheses | Red Quark
[3]. C++ std::stack 用法與範例 | ShengYu Talk (shengyu7697.github.io)
#筆記  #leetcode  #c語言 
分類:學習

【關鍵字】:新手教學、Leetcode ; 【分類】:學習、理財。(目前C++新手教學第二章內容已完結)。建議或意見可私訊:https://reurl.cc/ze7L9k。文章有錯誤的地方還請留言指正,謝謝各位

評論
上一篇
  • 14. Longest Common Prefix (C++)
  • 下一篇
  • C++ 新手教學9
  • 更多文章
    載入中... 沒有更多了