scala - 查找包含最多“a”字母的字符串
问题描述
我有一个问题,如果我能以某种方式缩短我的代码 - 我需要找到我的列表中的哪些字符串包含最多的 'a' 字母。我做了如下,但我几乎可以肯定我可以做得更短,但我不知道怎么做。所以首先我将我的列表映射到元组,在那里我有(el, num)
多少num
'a'包含(使用foldLeft)。然后我使用maxBy
所以我取一个具有最多'a'字母的元素,然后过滤num
==的所有元素res2._2
(因为可能有多个元素具有相同数量的'a'字母,所以我不能停在maxBy
我的代码:
def mostA(l: List[String]): List[String] = {
val res = l.map( string => (string, string.foldLeft(0)((acc,b) => if (b == 'a') acc + 1 else acc)))
val res2 = res.maxBy(x => x._2)
val res3 = res.filter(x => x._2 == res2._2).map{case (str, num) => str}
res3
}
解决方案
稍加努力,您就可以一口气完成:
l.foldLeft(List[String] -> 0) { case ((strs, max), s) =>
val n = s.count(_ == letter)
if (n == max) (s::strs, max) else if (n > max) (s::Nil, n) else (strs, max)
}._1.reverse
推荐阅读
- python - 如何从另一个函数修改函数内的列表
- user-interface - 编辑 UI 机器人框架
- cmake - 如何在 CMake 中使用 cpplint 代码样式检查?
- javascript - 等待 .then() 语句
- firebase - 来自带有 Facebook Auth 和 React Native 的 Firebase 的“回调 URL 不包含状态”错误
- jquery - Jquery Waypoints 未检测到视口
- java - 增加使用 Maven 构建时报告的 Javadoc 错误和警告的数量
- python-3.x - Beautifulsoup 用于循环和获取文本和 Href
- android - Android Studio 中的 xml 错误
- google-sheets - Google 表格:使用 QUERY 选择组内的前 N 个案例