前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Swift 有效的括号 - LeetCode

Swift 有效的括号 - LeetCode

作者头像
韦弦zhy
发布2018-10-11 15:31:50
7960
发布2018-10-11 15:31:50
举报

LeetCode

题目: 有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。

示例1:

代码语言:javascript
复制
输入: "()"
输出: true

示例2:

代码语言:javascript
复制
输入: "()[]{}"
输出: true

示例3:

代码语言:javascript
复制
输入: "(]"
输出: false

示例4:

代码语言:javascript
复制
输入: "([)]"
输出: false

示例5:

代码语言:javascript
复制
输入: "{[]}"
输出: true
方案一:

1、循环字符串,将左括号压栈 2、如果是右括号,将其与栈顶字符串匹配 3、因为没有除了括号的其他字符,所以最终栈内为空

代码一:
代码语言:javascript
复制
func isValid(_ s: String) -> Bool {
        var cArr = [Character]()
        for c in s {
            switch c {
            case "{","[","(":
                cArr.append(c)
            case "}":
                guard (!cArr.isEmpty && cArr.removeLast() == "{") else {
                    return false
                }
            case "]":
                guard (!cArr.isEmpty && cArr.removeLast() == "[") else {
                    return false
                }
            case ")":
                guard (!cArr.isEmpty && cArr.removeLast() == "(") else {
                    return false
                }
            default: break
            }
        }
        return cArr.isEmpty
    }
执行用时:20ms

开始的判断如下,上面优化只是减少了代码量

代码语言:javascript
复制
//最开始判断 1
if let last = cArr.last {
    if last == "(" {
        cArr.removeLast()
    } else {
        return false
    }
} else {
    return false
}

//最开始判断 2
if let last = cArr.removeLast() {
    if last != "(" {
        return false
    }
} else {
    return false
}

当然也可以不使用Switch case 直接 if else

用Swift开始学习算法中,在LeetCode中开始做初级算法这一章节,将做的题目在此做个笔记,希望有更好方法同学们cue我哦。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.10.08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目: 有效的括号
    • 方案一:
      • 代码一:
      • 执行用时:20ms
      • 用Swift开始学习算法中,在LeetCode中开始做初级算法这一章节,将做的题目在此做个笔记,希望有更好方法同学们cue我哦。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档