该程序可以运行,但是,我仍然遇到逻辑错误:最后一个字母没有运行完毕。例如,当我输入 aaaabbbbccccdddd 时,我得到的输出是 a4b4c4 但没有 d4。
fun main () {
val strUser = readLine()!!.toLowerCase()
val iLength = strUser!!.length
var iMatch : Int = 0
var chrMatch : Char = strUser[0]
for (i in 0..iLength) {
if (strUser[i] == chrMatch) {
iMatch += 1
}else {
print("$chrMatch$iMatch")
chrMatch = strUser[i]
iMatch = 1
}
}
}
解决方案有很多,但最好的是RegExp
fun encode(input: String): String =
input.replace(Regex("(.)\\1*")) {
String.format("%d%s", it.value.length, it.groupValues[1])
}
demo https://regex101.com/r/8DC57b/1
测试结果
println(encode("aaaabbbbccccdddd")) // 4a4b4c4d
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)