leetcode29( 有效的括号)

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例 1:

**输入:**s = "()"

**输出:**true

思路:将待匹配的左侧符号入栈,遇到右侧符号时弹出匹配,如果匹配失败立刻返回false

如果遍历结束,依然有左侧符号未被弹出,返回false

长为0和1的单独处理

java 复制代码
class Solution {
    public boolean isValid(String s) {
            if(s == null || s.length() == 0) return true;
        if(s.length()==1) return false;
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c == '(' || c == '{' || c == '[') {
                stack.push(c);
            }
            else if (c == ')' ) {
                if (stack.isEmpty()) {
                    return false;
                }
                else {
                    char top = stack.pop();
                    if (top != '(') {
                        return false;
                    }
                }
            }
            else if (c == '}' ) {
                if (stack.isEmpty()) {
                    return false;
                }
                else {
                    char top = stack.pop();
                    if (top != '{') {
                        return false;
                    }
                }
            }
            else if (c == ']' ) {
                if (stack.isEmpty()) {
                    return false;
                }
                else {
                    char top = stack.pop();
                    if (top != '[') {
                        return false;
                    }
                }
            }
        }
            if(stack.isEmpty()) return true;
        return false;
    }
}
相关推荐
budingxiaomoli28 分钟前
算法--滑动窗口(二)
算法
ID_180079054731 小时前
淘宝实时拍立淘按图搜索数据|商品详情|数据分析提取教程
算法·数据分析·图搜索算法
l1t1 小时前
Lua与LuaJIT的安装与使用
算法·junit·单元测试·lua·luajit
spencer_tseng1 小时前
Eclipse Uninstall Software
java·ide·eclipse
嗯、.1 小时前
使用 iText 9 为 PDF 添加文字水印的完整实战
java·pdf·itext
极客智造1 小时前
线性数据结构深度解析:数组、链表、栈与队列的实现与应用
数据结构·链表
怪兽20142 小时前
缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
java·缓存·面试
皮皮林5512 小时前
Java 25 正式发布:更简洁、更高效、更现代!
java
Emilia486.2 小时前
【Leetcode&nowcode】代码强化练习(二叉树)
算法·leetcode·职场和发展
墨染点香2 小时前
LeetCode 刷题【135. 分发糖果】
算法·leetcode·职场和发展