1. 程式人生 > >LeetCode刷題記錄4-有效的括號

LeetCode刷題記錄4-有效的括號

題目

由於只包含字元的字串’(‘,’)’,’{‘,’}’,’[‘和’]’,確定輸入字串是有效的。
括號必須關閉以正確的順序,”()”並且”()[]{}”都是有效的,但”(]”並”([)]”沒有效。

思路

首先我想改題目設計的括號種類肯定是可變的,但是每一種符合又是關聯的,所以我想到的辦法是使用pair來存每一對符號,這樣即使增加新的符號同樣適用。
所以我是用了unordered_map來儲存。
做法如下:

//儲存每一對key 
static unordered_map<char, char> theMap =
{
    { '(', ')' },
    { '['
, ']' }, { '{', '}' }, { '<', '>' }, }; //具體的s中的符號不與該函式關聯 達到解耦的目的 bool isValid(string s) { stack<char> keyStack; for (auto c : s) { //is value if (theMap.find(c) == theMap.end()) { if(keyStack.empty()) { return
false;//c為右邊 但是左邊值為空 } if (theMap[keyStack.top()] != c) { return false; } keyStack.pop(); } else //is key { keyStack.push(c); } } return keyStack.empty(); }

目前已驗證成立!