2016-12-01 5 views
0

"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

あなたのコードは正常に動作します。私はそれを実行する前に 'import scala.collection.immutable.HashMap'を先頭に追加しなければなりませんでした。 – jwvh

答えて

0

私はマップにHashMapを変更しましたが、あなたが期待したとおりに正しい結果を得ています!

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 
+0

なぜ、ハッシュマップに問題があるのか​​分かりますか? – sweetyBaby

+0

java.util.HashMapまたはscala.collection.mutable.HashMapはどちらですか? –

0
"aadb a".toCharArray.filterNot(_ ==' ').groupBy(c=>c).map{case (c ,ca) => c -> ca.length } 
+0

こんにちは、groupby(c => c)の意味は分かりますか? charインスタンスごとにcharと配列を与えるcharインスタンスごとに(c:Char => c)または{case c:Char => c}のグループのための短い – sweetyBaby

+0

のおかげです。 ) –

+0

Woludn't 'groupBy(identity)'はもっと明確になりますか? – Haspemulator

関連する問題