我是学习Scala的新手,我很欣赏任何有关惯用方法的想法.我想计算一个单词中连续字母对的出现次数.
例如,对于单词"home",输出可能是Map("ho"->1,"om"->1,"me"->1).对于'lulu',结果将是Map("lu"->2, "ul"->1 ).
因此,执行简单的单字母计数可能会完成
"abracadabra".map(s => s).groupBy(identity).mapValues(_.length)
Run Code Online (Sandbox Code Playgroud)
但我很难过如何添加这个问题的双字母组件.谢谢你的想法.
你可以使用.sliding:
scala> "abracadabra".sliding(2).toList.groupBy(identity).mapValues(_.length)
res3: scala.collection.immutable.Map[String,Int] =
Map(br -> 2, ca -> 1, ab -> 2, ra -> 2, ac -> 1, da -> 1, ad -> 1)
scala> "lulu".sliding(2).toList.groupBy(identity).mapValues(_.length)
res4: scala.collection.immutable.Map[String,Int] = Map(ul -> 1, lu -> 2)
Run Code Online (Sandbox Code Playgroud)
来自文档:
滑动:通过在其上面传递"滑动窗口"来对固定大小的块中的元素进行分组
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |