Ich löste ein Problem mit Codeforces, in dem ich die Ziffern einer großen Zahl zusammenfassen musste (es kann bis zu 100k Ziffern haben) und ich müsste diesen Vorgang wiederholen, bis nur noch eine Ziffer übrig ist und zähle die ich einige Male tat, und ich kam mit einer Arbeitslösung auf, aber ich würde gerne wissen, ob einige Dinge in einem „Kotlin-ish wie Art und Weise“, so gegeben hätte getan werden können:Können Sie einen String in einen Int abbilden/reduzieren?
fun main(args: Array<String>) {
println(transform(readLine()!!))
}
fun transform(n: String): Int {
var count = 0
var sum : Int
var s = n
while(s.length > 1) {
sum = (0 until s.length).sumBy { s[it].toInt() - '0'.toInt() }
s = sum.toString()
count++
}
return count
}
sum = (0 until s.length).sumBy { s[it].toInt() - '0'.toInt() }
gibt es eine Möglichkeit, die Summe der Ziffern in der Zeichenfolge auf die Summenvariable abzubilden, oder im Allgemeinen eine bessere Herangehensweise als die, die ich verwendet habe?- Wenn ich ein Char in ein Int umwandle, wird es in den ASCII-Wert konvertiert, also musste ich "-'0'toInt()" hinzufügen, gibt es einen schnelleren Weg (nicht dass es zu viel zu schreiben ist))
- Wie macht man den String n änderbar, ohne einen neuen String zu erstellen und ihn zu manipulieren? Oder ist das der gewünschte (und einzige) Weg?
P.S. Ich bin ein Anfänger mit Kotlin.
's.map {" $ it ".toInt()} .sum()' gibt die Summe der Ziffern zurück –