java - Leetcode 问题 - 20. 有效括号

标签 java stack

我正在尝试解决这个leetcode问题: 给定一个仅包含字符 '(', ')', '{', '}', '[' 和 ']' 的字符串,确定输入字符串是否有效。

输入字符串在以下情况下有效:

左括号必须由相同类型的括号封闭。 左括号必须按正确的顺序关闭。 请注意,空字符串也被视为有效。

我认为我几乎是正确的,并且已经研究这个问题很长时间了,但无法获得正确的输出,特别是在输入为“())”的情况下。

类解决方案{

public boolean isValid(String s) {

    Stack<Character> c = new Stack<>();
    int n = s.length();
    boolean bool = false;

    if (s.isEmpty() | s == null) {   // Correct
        return true;
    } 

    for (int i=0 ; i<n ; i++) {
        if (s.charAt(i) == '{') {
            c.push('{');
        } else if (s.charAt(i) == '[') {
            c.push('[');
        } else if (s.charAt(i) == '(') {
            c.push('(');

        } else if (s.charAt(i) == '}' & c.peek() == '{') {
            c.pop();
        } else if (s.charAt(i) == ']' & c.peek() == '[') {
            c.pop();
        } else if (s.charAt(i) == ')' & c.peek() == '(') {
            c.pop();
        } else {
            break;
        }
    }  
    if (c.isEmpty()) {
        return true;
    } else {
        return false;
    }
}

}

最佳答案

如果有人正在寻找 java 解决方案:

 public boolean isValid(String s) {

        Stack<Character> stack = new Stack<>();

        for(int i=0; i<s.length(); i++){
            char strChar = s.charAt(i);
            if(stack.empty()){
                stack.push(strChar);
            } else{
                char stkChar = (char) stack.peek();
                if(stkChar == '(' && strChar ==')' ){
                    stack.pop();
                } else if(stkChar == '{' && strChar=='}'){
                    stack.pop();
                } else if(stkChar == '[' && strChar == ']'){
                    stack.pop();
                } else{
                    stack.push(strChar);
                }
            }
        }
       return (stack.empty() ? "true" : "false");
    }

关于java - Leetcode 问题 - 20. 有效括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59046181/

相关文章:

java - Weld on Java SE 不使用替代方案

java - 如何使用Java知道当前年份中的当前日期?

java - 使用jasperreports在java中创建条形码图像,而不将图像保存在磁盘上

c - 运行时检查失败 #2 - 变量 'command' 周围的堆栈已损坏

java - 删除一个列表中的所有元素并添加到另一个列表 - Java

c - 局部变量在栈上的地址

java - 抽象接口(interface)

java - 添加 JTextArea 会使 JFrame 变得巨大,为什么?

java - 链表错误

c++ - 否定后缀不正确且可交流