給定乙個只包括 '(',')','','[',']' 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: "()"輸出:
true
示例 2:
輸入: "(){}
"輸出:
true
示例 3:
輸入: "(]"輸出:
false
示例 4:
輸入: "([)]
"輸出:
false
示例 5:
輸入: ""輸出:
true
思路:利用棧結構先進後出的原理
1.將資料來源用dic儲存, key為左括號 value為右括號
2.建立乙個記錄左括號的棧陣列flag
3.遍歷字串
如果當前字元滿足在dic的keys中,證明是左括號,
將元素入棧,壓入陣列flag中
如果不存在 ,證明是右括號,
如果當前字元等於棧頂元素,將棧頂元素出棧,移除陣列中的最後乙個元素,進入下乙個迴圈
如果當前字元不等於棧頂元素 也就是說,無法閉合之前的括號,則字串不成立 return false
最後只需要判斷棧陣列flag是不是為空即可,也就是說字串是不是全部完整閉合
classsolution
", "
[":"
]", "
(":")"
] var flag: [character] =
forchar
ins
else
else}}
//棧為空正好匹配,或者s為空字串
return flag.count == 0
}}
leetcode 有效的括號
題目 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 1.左括號必須用相同型別的右括號閉合。2.左括號必須以正確的順序閉合。示例1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 true includ...
leetcode 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...
LeetCode 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 本題需使用棧來解決,即遍歷字串,遇到左括號...