defcountAndSay(n: Int): String = { if (n < 1 || n > 30) "" val arr = newArray[String](31) arr(1) = "1" for (i <- 2 until n + 1) { arr(i) = countAndSay(arr(i - 1)) } arr(n) } /** * 双指针 */ defcountAndSay(str: String): String = { val res = new scala.collection.mutable.ListBuffer[String]() var i = 0 var j = 0 var c = 0 while (j < str.length) { if (str.charAt(i) == str.charAt(j)) { c += 1 j += 1 } else { res += (c.toString, str.charAt(i).toString) i = j c = 0 } } res += (c.toString, str.charAt(i).toString) res.mkString("") }