前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >每日手撕一道算法题-20. 有效的括号

每日手撕一道算法题-20. 有效的括号

原创
作者头像
编程之心
修改2020-08-14 17:54:43
修改2020-08-14 17:54:43
5870
举报
文章被收录于专栏:编程之禅编程之禅
20. 有效的括号

难度简单1760

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例 1:

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

示例 2:

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

示例 3:

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

示例 4:

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

示例 5:

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

解析:

分析可得,有效的括号都是对称的。

从左向右遍历,如果是左括号,就把对应右括号压入栈中。

碰到右括号。就检查不为空,弹出栈顶与之相同。否则直接return false。

最后遍历完,栈为空,则满足。

代码语言:txt
复制
public class Solution {
    public boolean isValid(String s) {
		Stack<Character> stack = new Stack<>();
        for (char c: s.toCharArray())
        switch (c) {
            case '(':   stack.push(')'); break;
            case '[':	stack.push(']'); break;
            case '{':	stack.push('}'); break;
            default:	if (stack.isEmpty() || stack.pop() != c) return false;
        }
        return stack.isEmpty();
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 20. 有效的括号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档