繁体   English   中英

有效的括号 Java

[英]Valid Parentheses Java

我正在尝试解决 Java 中的有效括号问题(此处在其他地方进行了描述:有效括号

到目前为止,我的代码如下:

class Solution {
    public boolean isValid(String s) {

        if(s.charAt(0) ="(") {
            if(s.charAt(s.length-1) != ")"){
                system.out.println("false");
            }
        }

        if(s.charAt(0) ="[") {
            if(s.charAt(s.length-1) != "]"){
               system.out.println("false");
            }
        }

        if(s.charAt(0) ="{") {
            if(s.charAt(s.length-1) != "}"){
                system.out.println("false");
            }
        }       
    }
}

目前我收到以下错误:

第 4 行:错误: unexpected type

   if(s.charAt(0) ="("){

任何人都可以就问题所在提出建议吗? 我现在无法弄清楚,但觉得这是我忽略的简单事情。

两个紧迫的问题:

  1. 字符值在 Java 中用单引号引起来,例如char c = 'c';
  2. 原始比较是用==完成的。 单个等号=用于赋值。

所以那一行应该是:

if(s.charAt(0) == '(') { /* ... */ }

请注意,这只会修复您遇到的最直接的错误。 修复之后,还有一些,例如system.out.println()应该是System.out.println()

而且,在解决这个问题之后,我认为你离解决实际任务还有一段距离。 坚持下去,祝你好运!

你的回答有些问题。 Robby Cornelissen在他的回答中指出了一些问题。 而且我还在您的代码中看到了 2 个错误。

  1. s.length应该是s.length()
  2. 您在isValid方法中没有返回语句。

第 1 期

在以下语句中,长度后缺少方括号() Length 是 Java 中的一种方法,用于获取您已知的 Java String 的长度。

if(s.charAt(s.length - 1) != ')')

所以你上面的陈述应该如下。

if(s.charAt(s.length() - 1) != ')')

第 2 期

在您的isValid方法中,它返回一个boolean值。 该方法的返回类型是boolean 但是您没有在方法中返回任何布尔值。 所以你必须添加一个return语句。 可能是,

return true; return false; 或在isValid方法中声明的任何boolean variable

最好在 Java 中使用堆栈作为有效括号

class Solution {
public boolean isValid(String s) {
   Stack stack = new Stack();
    for(int i=0; i<s.length; i++){
     if(s[i] =='('){
       stack.push(')')
    }
    else if(s[i] == '['){
     stack.push(']')
    }
    else if(s[i] =='{'){
     stack.push('}')
    }
   else if(s[i] !== stack.pop()){
    return false;
    }    
          
     }
   return true;
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM