Scala:长度为k的所有子串
Scala: all substrings of length k
我是 scala 的新手,我无法理解如何使用 map()
或 foreach()
等函数对字符串执行操作。
特别是,我试图从一个字符串(称为 k-shingles)中提取所有长度为 k 的唯一连续子字符串。我的函数 kshingles(s: String, k: Int)
调用字符串 "abcdab"
应该 return Set("ab", "bc", "cd", "da")
.
我怎样才能在 scala 中实现它?一个好处是可以并行化(例如使用 Spark)
sliding
是您正在寻找的方法。来自 sliding
文档:
Groups elements in fixed size blocks by passing a "sliding window" over them (as opposed to partitioning them, as is done in grouped
.) The "sliding window" step is set to one.
例如 "abcdab".sliding(2).toSet
将提供您要查找的结果。
在 Scala 2.13 中 String.sliding
已弃用。 Scala 2.13 的正确解决方案是:
"abcdab".toSeq.sliding(2).map(_.unwrap).toSet
我是 scala 的新手,我无法理解如何使用 map()
或 foreach()
等函数对字符串执行操作。
特别是,我试图从一个字符串(称为 k-shingles)中提取所有长度为 k 的唯一连续子字符串。我的函数 kshingles(s: String, k: Int)
调用字符串 "abcdab"
应该 return Set("ab", "bc", "cd", "da")
.
我怎样才能在 scala 中实现它?一个好处是可以并行化(例如使用 Spark)
sliding
是您正在寻找的方法。来自 sliding
文档:
Groups elements in fixed size blocks by passing a "sliding window" over them (as opposed to partitioning them, as is done in
grouped
.) The "sliding window" step is set to one.
例如 "abcdab".sliding(2).toSet
将提供您要查找的结果。
在 Scala 2.13 中 String.sliding
已弃用。 Scala 2.13 的正确解决方案是:
"abcdab".toSeq.sliding(2).map(_.unwrap).toSet