本文首發於公衆號「五分鐘學算法」,是圖解 LeetCode 系列文章之一。git
我的網站:www.cxyxiaowu.comgithub
題目來源於 LeetCode 上第 20 號問題:有效的括號。題目難度爲 Easy,目前經過率爲 37.8% 。算法
給定一個只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判斷字符串是否有效。bash
有效字符串需知足:動畫
注意空字符串可被認爲是有效字符串。網站
示例 1:ui
輸入: "()"
輸出: true
複製代碼
示例 2:spa
輸入: "()[]{}"
輸出: true
複製代碼
示例 3:code
輸入: "(]"
輸出: false
複製代碼
示例 4:cdn
輸入: "([)]"
輸出: false
複製代碼
示例 5:
輸入: "{[]}"
輸出: true
複製代碼
這道題讓咱們驗證輸入的字符串是否爲括號字符串,包括大括號,中括號和小括號。
這裏咱們使用棧。
class Solution {
public:
bool isValid(string s) {
stack<char> stack;
for( int i = 0 ; i < s.size() ; i ++ )
if( s[i] == '(' || s[i] == '{' || s[i] == '[')
stack.push(s[i]);
else{
if( stack.size() == 0 )
return false;
char c = stack.top();
stack.pop();
char match;
if( s[i] == ')' ){
match = '(';
}
else if( s[i] == ']' ){
match = '[';
}
else{
match = '{';
}
if(c != match) return false;
}
if( stack.size() != 0 )
return false;
return true;
}
};
複製代碼