括号序列 Scala题解 附Java代码

括号序列

题目描述:给出一个仅包含字符'(',')','{','}','['']',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()""()[]{}"都是合法的括号序列,但"(]""([)]"不合法。
**示例1**
输入
"["
返回值
false
**示例2**
输入
"[]"
返回值
true

scala题解

def isValid(s:String): Boolean ={
    //定义一个栈
    val stack = mutable.Stack[Character]()
    //遍历括号序列
    for(index<-0 to s.length-1){
      //当前位置的字符
      val ch = s.charAt(index)
      //如果是空栈的话,不需要判断,直接入栈即可
      if(stack.isEmpty){
        stack.push(ch)
      }else{
        //取出栈顶元素
        val peek = stack.head
        //如果栈顶元素和当前位置的括号能成为一个组合,那么将栈顶元素消掉
        if((peek=='('&&ch==')'||(peek=='['&&ch==']')||(peek=='{'&&ch=='}'))){
          stack.pop
        }else if(ch==']'||ch=='}'||ch==')'){
          //如果栈顶元素和当前元素不能构成一个组合,而且当前元素是右括号,那么该括号序列不成立
          return false
        }else{
          //该情况是括号嵌套,左括号之前没有右括号,可以直接入栈
          stack.push(ch)
        }
      }
    }
    //如果该栈元素都被消除掉,当前栈为空,为符合的括号序列
    stack.isEmpty
  }

随带附个Java代码:

public boolean isValid (String s) {
    Stack<Character> stack = new Stack<>();
    for(int i=0;i<s.length();i++){
      char ch = s.charAt(i);
      if(!stack.isEmpty()){
        char top = stack.peek();
        if((top=='('&&ch==')')||(top=='{'&&ch=='}')||(top=='['&&ch==']'))
          stack.pop();
        else if(ch==')'||ch==']'||ch=='}')
          return false;
        else stack.push(ch);
      }else{
        stack.push(ch);
      }
    }
    return stack.isEmpty();
  }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Scala中可以很方便地使用Java代码,因此将ScalaJava代码混合打包是很常见的需求。这里介绍一种使用sbt进行混合打包的方法。 1. 创建sbt项目 首先需要创建一个sbt项目,并将Java代码Scala代码分别放到src/main/java和src/main/scala目录下。 2. 配置build.sbt文件 在build.sbt文件中添加以下内容: ``` name := "your-project-name" version := "1.0" scalaVersion := "2.12.8" javacOptions ++= Seq("-source", "1.8", "-target", "1.8") unmanagedSourceDirectories in Compile += baseDirectory.value / "src" / "main" / "java" unmanagedResourceDirectories in Compile += baseDirectory.value / "src" / "main" / "resources" libraryDependencies ++= Seq( "org.scala-lang" % "scala-library" % scalaVersion.value, "com.typesafe.akka" %% "akka-actor" % "2.5.23" ) ``` 其中,unmanagedSourceDirectories指定了Java代码的位置,unmanagedResourceDirectories指定了资源文件的位置,libraryDependencies指定了项目需要的依赖库。 3. 打包 在sbt控制台中运行以下命令即可打包: ``` sbt package ``` 打包后的jar文件位于target/scala-2.12目录下。 4. 运行 可以使用以下命令运行打包后的jar文件: ``` java -cp your-project.jar com.your.package.MainClass ``` 其中,your-project.jar是打包后的jar文件名,com.your.package.MainClass是程序入口类的全限定名。 注意:在运行时需要保证依赖库已经被正确地加载。如果依赖库没有正确加载,可以使用以下命令运行: ``` java -cp your-project.jar:lib/* com.your.package.MainClass ``` 其中,lib/*表示将lib目录下的所有jar文件都加入到classpath中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值