LeetCode 20. 有效的括號
阿新 • • 發佈:2020-12-30
技術標籤:藍橋杯+日常刷題
20. 有效的括號
給定一個只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: “()”
輸出: true
示例 2:
輸入: “()[]{}”
輸出: true
示例 3:
輸入: “(]”
輸出: false
示例 4:
輸入: “([)]”
輸出: false
示例 5:
輸入: “{[]}”
輸出: true
解題思路:
利用棧先進後出的原則,把這道題解一下,就可以了。如果為([{這三個符號,則把它們對應的右括號存入堆疊。此時,如果發現一個右括號,則與棧頂的資料進行對比,如果相相同,則將當前的括號彈出,否則,直接返回假。
class Solution {
public:
bool isValid(string s) {
stack<char> Stack;
for (char c: s){
if (c == '('){
Stack.push(')');
}else if (c == '['){
Stack.push(']');
}else if (c == '{'){
Stack.push('}' );
// 這裡對stack為empty做判斷的要求是如果出現())
}else if (Stack.empty() || c!= Stack.top()){
return 0;
}else{
Stack.pop();
}
}
// 這裡對stack為empty做空的判斷要求是(((
return Stack.empty();
}
};