以下方法用于计算给定字符串中每个字符的出现次数: def countLetters(text: String): Map[Char, Int] = ???
例如,输入字符串“aabaab”应该Map到
Map(a -> 5, b -> 3, c -> 1)
下面是一个简单的迭代方法:
def countLetters(text: String): Map[Char, Int] = {
val h = collection.mutable.HashMap.empty[Char, Int]
for (c <- text)
h(c) = h.getOrElse(c, 0) + 1
h.toMap
}
有没有办法在不循环和显式分配可变哈希Map的情况下实现它?
1条答案
按热度按时间00jrzges1#
今天终于做到了!这就是我的工作原理:
text.foldLeft(Map[Char, Int]() withDefaultValue 0){(h, c) => h.updated(c, h(c)+1)}
如果你正在读这篇文章,祝你下次好运!;)