您现在的位置是:首页 > 编程 > 

【栈】

2025-07-27 12:59:03
【栈】 题目传送门解法(栈):算法原理 定义一个栈 如果是右括号,就放进栈中 如果是左括号,就判断这个字符 和 栈顶元素(同时出栈)是否匹配 如果不匹配就返回false 那么如果匹配那么就会出栈 最终栈为空 则返回 true 栈 不为空 就返回 false 代码:自己写的(思路清晰):代码语言:javascript代码运行次数:0运行复制 class Solution { p

【栈】

题目传送门

解法(栈):

算法原理

定义一个栈 如果是右括号,就放进栈中 如果是左括号,就判断这个字符 和 栈顶元素(同时出栈)是否匹配 如果不匹配就返回false 那么如果匹配那么就会出栈 最终栈为空 则返回 true 栈 不为空 就返回 false

代码:

自己写的(思路清晰):

代码语言:javascript代码运行次数:0运行复制
 class Solution {
    public boolean isValid(String s) {
        if(s.length() % 2 != 0){
            return false;
        }

        Stack<Character> stack = new Stack<>();
        for(char c : ()){
            if(c == '(' || c == '[' || c == '{'){
                stack.push(c);
            }
            if(stack.isEmpty()){
                return false;
            }
            
            if(c == ')'){
                if(stack.peek() == '('){
                    stack.pop();
                }else{
                    return false;
                }
            }else if(c == ']'){
                if(stack.peek() == '['){
                    stack.pop();
                }else{
                    return false;
                }
            }else if(c == '}'){
                if(stack.peek() == '{'){
                    stack.pop();
                }else{
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }
}

优化后:

代码语言:javascript代码运行次数:0运行复制
 class Solution {
    public boolean isValid(String s) {
        if(s.length() % 2 != 0) return false;
        
        Stack<Character> stack = new Stack<>();
        for(char c : ()){
            if(c == '(' || c == '[' || c == '{'){
                stack.push(c);
            }else {
                if(stack.isEmpty()) return false;
                char top = stack.pop();
                if(c == ')' && top != '(' || 
                    c == ']' && top != '[' || 
                    c == '}' && top != '{' ){
                    return false;
                } 
            }
        }
        return stack.isEmpty();
    }
}
复杂度分析

时间复杂度: O() 其中n是字符串的长度 空间复杂度: O() 其中n是字符串的长度

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-19,如有侵权请联系 cloudcommunity@tencent 删除原理字符串returnstack算法

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1164436.html

相关标签:无
上传时间: 2025-07-21 00:44:05
留言与评论(共有 6 条评论)
本站网友 营运能力分析
28分钟前 发表
()){ if(c == '(' || c == '[' || c == '{'){ stack.push(c); } if(stack.isEmpty()){ return false; } if(c == ')'){ if(stack.peek() == '('){ stack.pop(); }else{ return false; } }else if(c == ']'){ if(stack.peek() == '['){ stack.pop(); }else{ return false; } }else if(c == '}'){ if(stack.peek() == '{'){ stack.pop(); }else{ return false; } } } return stack.isEmpty(); } }优化后:代码语言:javascript代码运行次数:0运行复制 class Solution { public boolean isValid(String s) { if(s.length() % 2 != 0) return false; Stack<Character> stack = new Stack<>(); for(char c
本站网友 不支持flash
25分钟前 发表
就放进栈中 如果是左括号
本站网友 灵超
19分钟前 发表
【栈】 题目传送门解法(栈):算法原理 定义一个栈 如果是右括号
本站网友 猕猴桃的营养价值及功效
18分钟前 发表
()){ if(c == '(' || c == '[' || c == '{'){ stack.push(c); } if(stack.isEmpty()){ return false; } if(c == ')'){ if(stack.peek() == '('){ stack.pop(); }else{ return false; } }else if(c == ']'){ if(stack.peek() == '['){ stack.pop(); }else{ return false; } }else if(c == '}'){ if(stack.peek() == '{'){ stack.pop(); }else{ return false; } } } return stack.isEmpty(); } }优化后:代码语言:javascript代码运行次数:0运行复制 class Solution { public boolean isValid(String s) { if(s.length() % 2 != 0) return false; Stack<Character> stack = new Stack<>(); for(char c
本站网友 宫颈息肉图片
12分钟前 发表
如有侵权请联系 cloudcommunity@tencent 删除前往查看原理字符串returnstack算法