欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實現LeetCode(20.驗證括號)

 更新時間:2021年07月13日 11:28:03   作者:Grandyang  
這篇文章主要介紹了C++實現LeetCode(20.驗證括號),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下

[LeetCode] 20. Valid Parentheses 驗證括號

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

An input string is valid if:

  1. Open brackets must be closed by the same type of brackets.
  2. Open brackets must be closed in the correct order.

Note that an empty string is also considered valid.

Example 1:

Input: "()"
Output: true

Example 2:

Input: "()[]{}"
Output: true

Example 3:

Input: "(]"
Output: false

Example 4:

Input: "([)]"
Output: false

Example 5:

Input: "{[]}"
Output: true

這道題讓我們驗證輸入的字符串是否為括號字符串,包括大括號,中括號和小括號。這里需要用一個棧,開始遍歷輸入字符串,如果當前字符為左半邊括號時,則將其壓入棧中,如果遇到右半邊括號時,若此時棧為空,則直接返回 false,如不為空,則取出棧頂元素,若為對應的左半邊括號,則繼續(xù)循環(huán),反之返回 false,代碼如下:

 方法一:

class Solution {
public:
    bool isValid(string s) {
        stack<char> parentheses;
        for (int i = 0; i < s.size(); ++i) {
            if (s[i] == '(' || s[i] == '[' || s[i] == '{') parentheses.push(s[i]);
            else {
                if (parentheses.empty()) return false;
                if (s[i] == ')' && parentheses.top() != '(') return false;
                if (s[i] == ']' && parentheses.top() != '[') return false;
                if (s[i] == '}' && parentheses.top() != '{') return false;
                parentheses.pop();
            }
        }
        return parentheses.empty();
    }
};

方法二:

class Solution {
public:
    bool isValid(string s) {
        int n = s.size();
        if (n % 2 == 1) {
            return false;
        }

        unordered_map<char, char> pairs = {
            {')', '('},
            {']', '['},
            {'}', '{'}
        };
        stack<char> stk;
        for (char ch: s) {
            if (pairs.count(ch)) {
                if (stk.empty() || stk.top() != pairs[ch]) {
                    return false;
                }
                stk.pop();
            }
            else {
                stk.push(ch);
            }
        }
        return stk.empty();
    }
};

到此這篇關于C++實現LeetCode(20.驗證括號)的文章就介紹到這了,更多相關C++實現驗證括號內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++中set/multiset容器詳解(附測試用例與結果圖)

    C++中set/multiset容器詳解(附測試用例與結果圖)

    set/multiset屬于關聯(lián)式容器,底層結構是用二叉樹實現,下面這篇文章主要給大家介紹了關于C++中set/multiset容器的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • C語言游戲之猜數字

    C語言游戲之猜數字

    這篇文章主要為大家詳細介紹了C語言游戲之猜數字,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • OpenGL繪制三次Bezier曲線

    OpenGL繪制三次Bezier曲線

    這篇文章主要為大家詳細介紹了OpenGL繪制三次Bezier曲線,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++標準模板庫函數sort的那些事兒

    C++標準模板庫函數sort的那些事兒

    sort函數是標準模板庫的函數,已知開始和結束的地址即可進行排序,可以用于比較任何容器(必須滿足隨機迭代器),任何元素,任何條件,執(zhí)行速度一般比qsort要快
    2013-09-09
  • C和C++中的基本數據類型的大小及表示范圍詳解

    C和C++中的基本數據類型的大小及表示范圍詳解

    這篇文章主要介紹了C和C++中的基本數據類型的大小及表示范圍詳解,基本數據類型有int、long、long long、float、double、char、string,正文有詳細介紹,歡迎參考
    2018-01-01
  • c實現linux下的數據庫備份

    c實現linux下的數據庫備份

    本文給大家簡單介紹下c實現linux下的數據庫備份的方法和具體的源碼,十分的實用,有需要的小伙伴可以參考下。
    2015-07-07
  • C語言編程C++動態(tài)內存分配示例講解

    C語言編程C++動態(tài)內存分配示例講解

    這篇文章主要介紹了C語言編程C++動態(tài)內存分配示例講解,為什么存在動態(tài)內存分配?本文通過動態(tài)內存介紹及常見內存錯誤等示例來為大家講解
    2021-09-09
  • Ubuntu16.04下配置VScode的C/C++開發(fā)環(huán)境

    Ubuntu16.04下配置VScode的C/C++開發(fā)環(huán)境

    這篇文章主要介紹了Ubuntu16.04下配置VScode的C/C++開發(fā)環(huán)境的教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • C語言單鏈表實現圖書管理系統(tǒng)

    C語言單鏈表實現圖書管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言單鏈表實現圖書管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++根據傳入的函數指針來解析需要的參數(推薦)

    C++根據傳入的函數指針來解析需要的參數(推薦)

    C++可以根據傳入的函數指針,獲取自己需要的參數類型,然后根據參數源中獲取需要的參數,具體實現方式大家參考下本文
    2018-05-05

最新評論