【问题标题】:Handling unions, subsets and supersets in Scala在 Scala 中处理联合、子集和超集
【发布时间】:2010-10-31 13:35:08
【问题描述】:

我需要编写一个代码 sn-p 来比较多个数组并生成与这些数组中的数据匹配的集合,仅在数组 A 中生成数据集,而不在数组 B、C、D 中生成数据集B 但不在 A、C、D 中,能够处理任意数量的数组(即动态循环)。代码应该使用 Scala 中的匿名函数(即不像 Java 中的常规数组循环)。

【问题讨论】:

    标签: algorithm scala functional-programming set adts


    【解决方案1】:

    对我来说听起来像是家庭作业。到目前为止,最简单的方法是将数组 A 的内容放入 Set 并使用删除操作。这将是 O(n),其中 n = \sum { |A|, |B|, |C|, ... }。以下解决方案适用于任意Iterable,而不仅仅是Array

    def compareArrays[A](arrs: List[Iterable[A]]) = arrs match {
      case a :: tail => {
        val set = a.foldLeft(Set[A]()) { _ + _ }
        tail.foldLeft(set) { _ -- _ }
      }
    
      case Nil => Nil
    }
    

    【讨论】:

      猜你喜欢
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 2011-08-06
      • 2011-05-03
      • 2016-06-16
      相关资源
      最近更新 更多