我在 Kotlin 中起草了一个对我来说足够好的函数。
fun diff(l: String, r: String): Int {
var diff = 0
for (i in 0 until l.length) {
if (l[i] != r[i]) diff++
if (diff > 1) break
}
return diff
}
在呼叫方,我只需检查
diff == 1
。
但是,我想将我的代码片段重写为函数风格的单行代码,使函数只是一个返回语句,但无法想出如何做到这一点的想法。 我认为可以使用
takeWhile
或 fold
函数或其他方式来解决。
请注意字符串长度相同(字符数相同,仅 ASCII)。
附注 如果您觉得我的代码片段不好,请在评论中分享您如何改进它的建议。
鉴于字符串长度相同,您可以链接
zip
和 count
来获取不同字符的数量,如下所示
l.zip(r).count { (l_c, r_c) -> l_c != r_c }