地图不会重置密钥的值

时间:2016-12-01 02:35:45

标签: scala

我编写了函数来计算字符串中每个字符的出现次数,例如“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
 }

2 个答案:

答案 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 }