由于各大平台的算法题的解法很少有Swift的版本,小编这边将会出个专辑为手撕LeetCode算法题。新手撕算法。
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([)]"
输出:false
示例 5:
输入:s = "{[]}"
输出:true
提示:
1 <= s.length <= 104
s 仅由括号 '()[]{}' 组成
Swift 解法如下:
class Solution {
func isValid(_ s: String) -> Bool {
var array: [String] = Array.init()
if s.count < 2 {
return false
}
for item in s {
if item == "(" || item == "{" || item == "["{
array.append(String("\(item)"))
}else{
if array.count == 0{
//如果还没有符号
return false
}
//已经有符号了
if isTrue(str:String("\(array[array.count-1])")) != String("\(item)"){
return false
}else{
array.removeLast()
}
}
}
//判断是否清空了数组,以免漏判断
if array.count > 0{
return false
}else{
return true
}
}
//所配对的符号
func isTrue(str:String)-> String{
if str == "["{
return "]"
}else if str == "{"{
return "}"
}else {
return ")"
}
}
}