【问题标题】:Scala: all substrings of length kScala:长度为k的所有子串
【发布时间】:2021-02-17 03:11:45
【问题描述】:

我对 scala 完全陌生,我无法理解如何使用 map()foreach() 等函数对字符串执行操作。

特别是,我试图从字符串中提取所有长度为 k 的唯一连续子字符串(称为 k-shingles)。我在字符串"abcdab" 上调用的函数kshingles(s: String, k: Int) 应该返回Set("ab", "bc", "cd", "da")

如何在 scala 中实现这一点?一个好处是可以并行化(例如使用 Spark)

【问题讨论】:

    标签: scala apache-spark functional-programming mapreduce


    【解决方案1】:

    sliding 是您正在寻找的方法。来自sliding 文档:

    通过在固定大小的块中传递“滑动窗口”对元素进行分组(而不是像 grouped 中那样对它们进行分区。)“滑动窗口”步骤设置为 1。

    例如"abcdab".sliding(2).toSet 将提供您正在寻找的结果。

    在 Scala 2.13 中,String.sliding 已弃用。 Scala 2.13 的正确解决方案是:

    "abcdab".toSeq.sliding(2).map(_.unwrap).toSet
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-01
      • 2017-03-05
      • 1970-01-01
      • 2013-05-15
      • 1970-01-01
      相关资源
      最近更新 更多