Scala:长度为k的所有子字符串
我是scala的新手,我很难理解如何使用Scala:长度为k的所有子字符串,scala,apache-spark,functional-programming,mapreduce,Scala,Apache Spark,Functional Programming,Mapreduce,我是scala的新手,我很难理解如何使用map()或foreach()等函数对字符串执行操作 特别是,我试图从一个字符串(称为k-shingles)中提取长度为k的所有唯一连续子字符串。我的函数kshingles(s:String,k:Int)在字符串“abcdab”上调用时应返回Set(“ab”、“bc”、“cd”、“da”) 我如何在scala中实现这一点?一个额外的好处是它可以并行化(例如使用Spark)是您正在寻找的方法。从滑动文档: 通过在固定大小的块上传递“滑动窗口”对元素进行分组(
map()
或foreach()
等函数对字符串执行操作
特别是,我试图从一个字符串(称为k-shingles)中提取长度为k的所有唯一连续子字符串。我的函数kshingles(s:String,k:Int)
在字符串“abcdab”
上调用时应返回Set(“ab”、“bc”、“cd”、“da”)
我如何在scala中实现这一点?一个额外的好处是它可以并行化(例如使用Spark)是您正在寻找的方法。从滑动文档:
通过在固定大小的块上传递“滑动窗口”对元素进行分组(与在grouped
中对元素进行分区相反),“滑动窗口”步骤设置为一
例如“abcdab”。滑动(2)。toSet
将提供您要查找的结果
在Scala 2.13String中,不推荐使用滑动。Scala 2.13的正确解决方案是:
"abcdab".toSeq.sliding(2).map(_.unwrap).toSet
- 对于Scala 2.13
- 对于Scala 2.12