我编写了函数来计算字符串中每个字符的出现次数,例如“aadb a”,它应该返回a-> 3,d-> 1,b-> 1,地图大小应该是3,但现在是错误的
以下是我的代码:我可以知道这个问题吗?
def checkPalindrome(str:String): Int={
str.foldLeft(HashMap.empty[Char, Int]){(map, char)=> (char) match{
case ' '=>map
case _ => map+(char -> (map.getOrElse(char, 0) + 1))
}
}.size
}
答案 0 :(得分:0)
我刚刚将HashMap更改为Map,它正如您所期望的那样给我正确的结果!
scala>
scala> def checkPalindrome(str:String): Int={
| str.foldLeft(Map.empty[Char, Int]){(map, char)=> (char) match{
| case ' '=>map
| case _ => map+(char -> (map.getOrElse(char, 0) + 1))
| }
| }.size
| }
checkPalindrome: (str: String)Int
scala> checkPalindrome("aadb a")
res6: Int = 3
答案 1 :(得分:0)
"aadb a".toCharArray.filterNot(_ ==' ').groupBy(c=>c).map{case (c ,ca ) => c -> ca.length }