LeetCode刷題記錄4-有效的括號
阿新 • • 發佈:2019-02-18
題目
由於只包含字元的字串’(‘,’)’,’{‘,’}’,’[‘和’]’,確定輸入字串是有效的。
括號必須關閉以正確的順序,”()”並且”()[]{}”都是有效的,但”(]”並”([)]”沒有效。
思路
首先我想改題目設計的括號種類肯定是可變的,但是每一種符合又是關聯的,所以我想到的辦法是使用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();
}
目前已驗證成立!