fun compute(l: String, r: String): Int {
var counter = 0
for (i in l.indices) when {
l[i]!=r[i] -> counter++
}
return counter
}
是否有一个内置函数可以用来代替显式循环遍历每个字符?
假设
zip
怎么样:
fun compute(l: String, r: String): Int {
return l.zip(r).count { it.first != it.second }
}
如果顺序无关紧要,您可以简单地计数:
return l.count { it in r }
但是,如果要检查值和索引是否匹配,则不能使用索引进行转义:
l.forEachIndexed { i, it ->
if(i < r.length && it == r[i]) counter++
}
UPD:哦我才发现有
commonPrefixWith
return l.commonPrefixWith(r).length
fun String.compute(r: String): Int {
return toCharArray()
.zip(r.toCharArray())
.count { (l, r) -> l != r }
}
假设:
我不认为这是一个可行的选择,但只是发布,因为我正在玩一些 Kotlin 只是为了学习一点语言:
fun compute(l: String, r: String): Int {
return Regex("(.)(?=.{"+(l.length-1)+"}\\1)").findAll(l+r).count()
}