fork download
  1. object Main extends App {
  2. def countSimilar(str: String, ch: List[Char]): String = {
  3. def process(l: List[Char], acc: String = ""): String = {
  4. l match {
  5. case Nil => acc
  6. case h :: _ =>
  7. val tw = l.takeWhile(_ == h)
  8. acc + process(
  9. l.drop(tw.length),
  10. if (ch.contains(h)) h + tw.length.toString else tw.mkString("")
  11. )
  12. }
  13. }
  14.  
  15. process(str.toList)
  16. }
  17.  
  18. println(countSimilar("aaaabbbcccss", List('a', 'b')))
  19. println(countSimilar("aaaabbbcccssaaaabb", List('a', 'b', 'c')))
  20. }
Success #stdin #stdout 0.41s 2181632KB
stdin
Standard input is empty
stdout
a4b3cccss
a4b3c3ssa4b2