給定乙個只包括'('
,')'
,''
,'['
,']'
的字串,判斷字串是否有效。有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入:"()"輸出:true示例 2:輸入:"(){}"輸出:true示例 3:輸入:"(]"輸出:false示例 4:輸入:"([)]"輸出:false示例 5:輸入:
""輸出:true
演算法
棧機制:遍歷字串,遇到左括號壓棧,遇到右括號判斷:若有與之匹配的左括號,彈棧,若不匹配,直接返回false
遍歷完字串,判斷棧空,若空,返回true;否則,返回false
1class
solution
13else
if(s[i] == ')'
)1421else
2225}26
else
if(s[i] == ']'
)2734else
3538}39
else
if(s[i] == '}'
)4047else
4851}52
}53return
str.empty();54}
55 };
上面**,可讀性太差,不夠精簡,重寫了一下。
思路:map + stack機制,map儲存括號的對映(注意是右括號對映左括號,因為後面要用右搜尋左),stack做左括號的壓棧彈棧操作。遇到右括號,如果棧空或者棧頂不是對應左括號(用map去找),返回false,否則,彈棧。
1class
solution
'] = '23}
24return
st.empty();25}
26 };
LeetCode20有效括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...
Leetcode 20 有效括號
leetcode 20 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true pthon 列表 如 a a b 字典 如 dict not ...
leetcode 20 有效括號
怎麼減少if語句,判斷是否是某乙個值,將值存進map中,是否在map中,若在,則是 匹配用map 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出...