Scala:确保大括号平衡

2023-12-01

我正在运行代码来平衡语句中的括号。我认为我已经得到了正确的结果,但它在一个特定的陈述上失败了,我需要理解为什么?

这是测试,特别是它失败了“())(”

除了编码之外,我认为我需要修复算法,有什么指示吗?

def balance(chars: List[Char]): Boolean = {

  def find(c: Char, l: List[Char], i: Int): Int={
    if( l.isEmpty ) {
      if(c=='(')
        i+1
      else if(c==')')
        i-1
      else
        i
    }
    else if (c=='(')
      find(l.head, l.tail, i+1)
    else if(c==')')
      find(l.head,l.tail, i-1)
    else
      find(l.head,l.tail, i)

  }

  if(find(chars.head, chars.tail,0) ==0 )
     true
  else
     false

}


balance("())(".toList) //passes when it should fail
balance(":-)".toList)
balance("(if (zero? x) max (/ 1 x))".toList)
balance("I told him (that it's not (yet) done).\n(But he wasn't listening)".toList)

这是一个版本:

def balance(chars: List[Char]): Boolean = {
    def inner(c: List[Char], count: Int): Boolean = c match {
        case Nil                   => count == 0           // Line 1
        case ')' :: _ if count < 1 => false                // Line 2
        case ')' :: xs             => inner(xs, count - 1) // Line 3
        case '(' :: xs             => inner(xs, count + 1) // Line 4
        case _ :: xs               => inner(xs, count)     // Line 5
    }
    inner(chars, 0)
}

因此,在您的代码中,我认为当您遇到正确的括号时,您错过了对 count

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scala:确保大括号平衡 的相关文章

  • 使用 lift-json 反序列化具有 Map[String,Any] 属性的案例类

    几天来我一直在努力解决一些通过 lift json 应该很简单的事情 将映射序列化为 JSON 我知道 我知道 根对象还不能是 List 或 Map 但我愿意暂时包装在一个案例类中 但我仍然无法让它工作 感谢一些堆栈溢出帮助 我已经可以进行
  • Spark 和 Scala 中的文本操作

    这是我的数据 review text The product picture and part number match but they together do not math the description review text A
  • 在 scala 中混合类型参数和抽象类型

    我正在尝试使用的答案前面的问题 https stackoverflow com questions 2059601 circular type parameters definition in scala实现一个小型图形库 这个想法是将图视
  • 递归与迭代算法

    我正在实现欧几里德算法来查找两个整数的 GCD 最大公约数 给出了两个示例实现 递归和迭代 http en wikipedia org wiki Euclidean algorithm Implementations http en wik
  • Scala 中的模式匹配是如何在字节码级别实现的?

    Scala 中的模式匹配是如何在字节码级别实现的 是不是像一系列if x instanceof Foo 构造 还是其他什么 它对性能有何影响 例如 给出以下代码 来自Scala 示例 http www scala lang org docu
  • 在 Traversable 视图上执行 FoldLeft 时,Scala 中出现类型方差错误

    我正在尝试连接一系列TraversableScala 中的视图使用foldLeft运算符并遇到我不明白的类型差异错误 我可以用reduce连接列表Traversable像这样的观点 val xs List 1 2 3 4 map Trave
  • Scala:不变性和路径依赖的类型兼容性

    我围绕这个主题提出了一些问题 但这次我想让它成为一个更一般性的讨论 因为在我看来 Scala 缺少一些非常重要的块 考虑以下代码 从我的真实项目中简化 trait World type State lt StateIntf def evol
  • 为什么删除 else 会减慢我的代码速度?

    考虑以下函数 def fact1 n if n lt 2 return 1 else return n fact1 n 1 def fact2 n if n lt 2 return 1 return n fact2 n 1 它们应该是等价的
  • 将括号子集映射到字符

    我正在尝试创建一个 Scala 方法 该方法将采用一个父括号组 表示为字符串 然后将每个括号子组映射到不同的字母 然后它应该将它们放入它返回的映射中 所以基本上我调用以下方法 如下所示 val s 2 x 3 6 val map mapPa
  • scalac 编译生成“对象 apache 不是包 org 的成员”

    我的代码是 import org apache spark SparkContext 它可以在交互模式下运行 但是当我使用 scalac 编译它时 出现以下错误消息 对象 apache 不是包 org 的成员 这似乎是路径的问题 但我不知道
  • MongoDB 中递归文档的结构和查询语法?

    我最近开始在工作项目中研究 MongoDB 我对 JSON 和 MongoDB 的查询结构相当陌生 所以我希望你们中的一位能够提供一些说明 我已将这个问题翻译成 Excel 术语 因为它很常见并且很好地代表了我的问题 如果我尝试将 Exce
  • 在 scalaz 中免费实施

    Haskell 中的免费实现是 data Free f a Pure a Free f Free f a 而 Scalaz 中的实现是 sealed abstract class Free S A private case class Re
  • 隐式类中的 Scala 按名称调用构造函数参数

    下面的代码不编译 期望的是在隐式类中有一个按名称调用构造函数参数 如下所示 def f n Int 1 to n product implicit class RichElapsed A val f gt A extends AnyVal
  • 将结构数组分解为 Spark 中的列

    我想将结构数组分解为列 由结构字段定义 例如 root arr array nullable true element struct containsNull true id long nullable false name string
  • Scala 中 Null/Nothing/Unit 的用法

    我刚刚读过 http oldfashionedsoftware com 2008 08 20 a post about nothing http oldfashionedsoftware com 2008 08 20 a post abou
  • 在 Scala 中创建 Java 对象

    我有一个 Java 类 Listings 我在 Java MapReduce 作业中使用它 如下所示 public void map Object key Text value Context context throws IOExcept
  • 使用线性递归计算第 n 个斐波那契数 [重复]

    这个问题在这里已经有答案了 我努力了二元递归找到第 n 个斐波那契数 或通过使用整个斐波那契数列 for循环进入main 但根据Java 中的数据结构和算法 第六版 迈克尔 T 古德里奇 这是一种效率极低的方法 因为它需要对该方法进行指数级
  • Scala 中的数字格式?

    我有一个从文件中读取的动态变化的输入 数字是Int or Double Scala 为什么要打印 0每次之后Double数字 Scala 有没有办法以与读取相同的方式打印它 Example var x Double 1 println x
  • 使用 Either 处理 Scala 代码中的故障

    Optionmonad 是 Scala 中处理有或无事物的一种很好的表达方式 但是 如果在 什么也没发生 时需要记录一条消息怎么办 根据 Scala API 文档 Either 类型通常用作 scala Option where Left
  • 乔达时间:将 UTC 转换为本地时间

    我想将 Joda Time UTC DateTime 对象转换为本地时间 这是一种看似有效的费力方法 但一定有更好的方法 这是没有周围声明的代码 在 Scala 中 val dtUTC new DateTime 2010 10 28T04

随机推荐

  • Android 自定义日历视图禁用特定日期

    我是 Android 开发新手 开始开发一个预订应用程序 有一个日历视图 我想禁用该日历中的预订日期 我发现 Android 默认日历中没有禁用功能 那么您能帮我找到一个可以禁用特定日期的良好自定义日历视图吗 我需要资源或图书馆 谢谢你 在
  • 尝试在空对象上调用接口方法“android.media.session.ISessionController android.media.session.ISession.getController()”

    下面的代码是带有使用媒体会话的控件的音乐通知播放器 每当我单击通知中的控件时 它就会崩溃并出现上述错误 请参阅下面的代码 如果我错了 请纠正我 在下面的代码中 我使用媒体会话和广播接收器来构建通知 track 是我所有歌曲数据的模型类 tr
  • 当“display_errors”打开时,为什么此语法错误会返回 HTTP 错误 500?

    给定以下脚本 我得到了预期的 Notice Use of undefined constant error assumed error in htdocs test php on line 8 但如果我在脚本中添加一些东西 I get HT
  • NSXMLParser 从 XML 标签中检索错误数据

    我正在读取带有某些字段的 xml 例如
  • Python lambda 不接受元组参数[重复]

    这个问题在这里已经有答案了 我在两台 PC Linux 和 Windows 上运行带有 PyDev v2 6 插件的 Eclipse SDK v3 6 我想传递一个元组作为参数 例如 foo lambda x y y x print foo
  • Fancybox 导致 IE 加载速度缓慢?

    我正在使用 Fancybox v 1 3 4 在 iframe 中显示视频这一页 Fancybox 和视频显示良好 但问题是 自从添加代码后 我在 IE7 8 中加载网站时遇到了巨大的停顿 类似于这个问题 页面加载后 UI 冻结了 4 5
  • 从故障转储中获取 GDI 句柄计数的命令

    我有一个故障转储 我怀疑 GDI 泄漏是导致崩溃的原因 从完整的故障转储中是否可以找出我的进程崩溃时使用的 GDI 句柄的数量 我创建了一个 Windbg 脚本来转储 GDI 句柄表中的所有 GDI 句柄 看https aloiskraus
  • 构建 Logistic 回归模型时出现“检测到完美分离,结果不可用”

    作为我作业的一部分 我正在构建逻辑回归模型 但在构建模型时出现错误 检测到完美分离 结果不可用 X train year amt spnt rank 1 1 723034 0 418500 0 272727 2 0 716660 2 088
  • QTimer::timeout 没有触发

    我正在尝试创建一个在我的 Singleton 工作线程中每 n 秒触发一次的事件 信号 槽连接 信号是 QTimer 超时 槽是调用另一个 Singleton 类的 lambda 函数 无法正常工作 连接调用成功 计时器处于活动状态 并且我
  • 两列布局,左侧流体,右侧填充其余宽度

    我需要类似的东西this and this 但是我希望右列不是固定大小 而是可变大小 是否可以 some text stretch to fill the remaining space lt viewport 这是float解决方案 您可
  • Java 构造函数中的“this”

    嗯 这是一个非常基本的问题 我从来没有用java编写过代码 但我正在为朋友编写一个类 有类似的东西 class myClass private string name public string getName return this na
  • 如何通过php找到给定的十进制值的位数?

    我对php不太熟悉 但我知道我们可以通过php找到给定数字的位值 例如 如果输入为 23 56 则应回显 2 十 3 个 5 百分之一 6 千分之一 任何想法将不胜感激 请帮忙 Try str 23 56 strdiv explode st
  • Spark RDD:如何最有效地计算统计数据?

    假设存在类似于以下的元组 RDD key1 1 key3 9 key2 3 key1 4 key1 5 key3 2 key2 7 计算每个键对应的统计信息的最有效 并且理想情况下是分布式 的方法是什么 目前 我特别希望计算标准差 方差 据
  • 二维数组与一维数组的性能

    在 C 中 m n 二维数组与长度为 m n 的一维数组 对于 m 和 n 的较大值 之间在时间和空间上是否存在差异 使用一维数组访问元素会更快吗 在 C 中 二维数组只是一维数组的简洁索引方案 就像一维数组一样 二维数组分配单个连续内存块
  • 无法在 webview 上加载地理位置

    我想将地理位置加载到 android 2 1 上的 webview 中 地理定位在我的浏览器上运行良好 但在 webview 上却失败了 public class WebPageLoader extends Activity impleme
  • Pyspark:pandas_udf、grouped_agg 的多个参数

    我正在尝试应用带有两个参数的 pandas udf 但我有这个错误 首先我尝试使用一个参数 没问题 from pyspark sql functions import pandas udf PandasUDFType from pyspar
  • re.sub 中的 python 正则表达式条件 - 如何?

    是否可以使用python的正则表达式条件re sub 我尝试了多种变体但没有运气 这就是我所拥有的 import re match anything
  • Spring - 自动装配通用接口的通用实现

    我有一个小问题 这可能是微不足道的 但我以前从未遇到过 我有通用接口和它的通用实现 我想自动装配它 但发生了错误 详细信息如下 界面 Service public interface Serializing
  • Node-Webkit (nwjs) 节点远程用法

    我想知道如果我想从服务器运行应用程序的一些逻辑 功能 是否有人可以给我一个关于 节点远程 如何工作的示例 就像 我不知道在 package json 添加 node remote hostip 后该怎么做 我的服务器应该提供什么 js 文件
  • Scala:确保大括号平衡

    我正在运行代码来平衡语句中的括号 我认为我已经得到了正确的结果 但它在一个特定的陈述上失败了 我需要理解为什么 这是测试 特别是它失败了 除了编码之外 我认为我需要修复算法 有什么指示吗 def balance chars List Cha