有没有更好的方法来计算 Kotlin 中一对字符串中匹配字符的数量

问题描述 投票:0回答:4
fun compute(l: String, r: String): Int {
    var counter = 0
    for (i in l.indices) when {
        l[i]!=r[i] -> counter++
    }
    return counter
}

是否有一个内置函数可以用来代替显式循环遍历每个字符?

假设

  1. 字符串长度相等
  2. 字符的位置很重要
  3. 比较区分大小写
string kotlin methods character string-matching
4个回答
3
投票

像这样使用

zip
怎么样:

fun compute(l: String, r: String): Int {
    return l.zip(r).count { it.first != it.second }
}

2
投票

如果顺序无关紧要,您可以简单地计数:

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

0
投票
fun String.compute(r: String): Int {
  return toCharArray()
    .zip(r.toCharArray())
    .count { (l, r) -> l != r }
}

假设:

  • 字符串长度相等
  • 字符的位置很重要
  • 比较区分大小写

0
投票

我不认为这是一个可行的选择,但只是发布,因为我正在玩一些 Kotlin 只是为了学习一点语言:

fun compute(l: String, r: String): Int {
    return Regex("(.)(?=.{"+(l.length-1)+"}\\1)").findAll(l+r).count()
}
© www.soinside.com 2019 - 2024. All rights reserved.