有人可以解释我的方法有什么问题吗?

TanDev:

我正在尝试尝试此问题。https://leetcode.com/problems/valid-parentheses/但是,如果在第二个for循环中可以比较s.charAt(i)和stack.pop(),我感到困惑。

基本上,我的方法是这样的。将整个字符串推入堆栈,然后使用stack.charAt(i)遍历堆栈的前半部分,然后使用stack.pop()将其与后半部分进行比较。我只是想知道代码中可能出什么问题,因为当我期望一个真值时我得到一个假值。我只是想了解我的概念是否存在缺陷?

class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        
        boolean done = false;
        
        if(s.length() < 2)
            return true;
        
        for(int i = 0; i < s.length(); i++){
            stack.push(s.charAt(i));
        }
        
        for(int i = 0; i < s.length()/2; i++){
            if(s.charAt(i) == stack.pop())
                done = true;
        }
        
        return done;   
    }
}
Mureinik:

您的代码首先迭代到字符串的中间,然后填充堆栈,然后从中间到末尾并弹出堆栈。换句话说,您隐式地假设有效字符串的前半部分是各种类型的开括号,第二个是其相应的闭括号(例如([]){[()]})。但是,这些并不是唯一有效的字符串-没有限制,只要成对的匹配,就不能在右括号后面加上开括号,例如,这(()())是一个有效字符串。

而不是对字符串中的位置进行假设,您应该遍历字符串,对于每个字符,如果是一个开括号,请将其推入堆栈,如果是一个结束括号,则将堆栈弹出并比较两个:

private static final Map<Character, Character> PARENS = new HashMap<>();
static {
    PARENS.put('(', ')');
    PARENS.put('[', ']');
    PARENS.put('{', '}');
}
public static boolean isValid(String s) {
    Stack<Character> stack = new Stack<>();

    for (int i = 0; i < s.length(); ++i) {
        char ch = s.charAt(i);
        if (PARENS.containsKey(ch)) {
            stack.push(ch);
        } else {
            if (stack.isEmpty()) {
                return false;
            }
            char match = stack.pop();
            if (ch != PARENS.get(match)) {
                return false;
            }
        }
    }

    return stack.isEmpty();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有人可以解释我的代码出了什么问题吗?

有人可以帮我解释一下我的C代码有什么问题吗?

有人可以告诉我我的代码有什么问题并尝试对其进行解释吗?

有人可以解释一下这段代码有什么问题吗?

有人可以告诉我我的代码有什么问题吗?[Python 2.7.1]

有人可以告诉我我的代码有什么问题吗?

有人可以帮我找出我的代码有什么问题吗?

有人可以告诉我这段代码有什么问题吗

有人可以检查我的Xor神经网络代码有什么问题吗

有人可以告诉我这张图片有什么问题吗?

有人可以告诉我此python代码有什么问题吗?

有人可以告诉我我的Type或linq查询出了什么问题吗

有人可以向我解释逻辑问题吗

有人可以说我的excel嵌套IF函数出了什么问题吗?

有人可以告诉我出了什么问题吗?

有人可以解释尝试比较2个数组的代码有什么问题吗?

连接问题-有人可以向我解释我做错了什么吗?

有人可以向我解释什么是stty吗?

python中的变量不起作用,有人可以告诉我我的代码有什么问题吗?

详细信息未显示 - 有人可以告诉我我的代码有什么问题吗?

有人可以告诉我这有什么问题吗?是的,我刚开始学习 c#

有人可以告诉我在React Js中子元素的这种循环实现有什么问题吗

有人可以帮我弄清楚合并排序的实现有什么问题吗?

有人可以告诉我我的package.json文件出了什么问题吗?

我的代码有什么问题?有人能帮我吗

有人能告诉我我的代码有什么问题吗

有人能告诉我我的代码有什么问题吗?

有人可以指出这里有什么问题吗

有人会让我知道下面的XSL有什么问题吗?