提问人:Pragati Bhattad 提问时间:2/28/2023 最后编辑:Pragati Bhattad 更新时间:3/20/2023 访问量:221
有没有更好的方法来计算 Kotlin 中一对字符串中的匹配字符数
Is there a better way to Count the Number of matching characters in a pair of strings in Kotlin
问:
fun compute(l: String, r: String): Int {
var counter = 0
for (i in l.indices) when {
l[i]!=r[i] -> counter++
}
return counter
}
是否有内置函数可以使用,而不是显式循环每个字符?
若
- 字符串的长度相等
- 字符的位置很重要
- 比较区分大小写
答:
3赞
Youcef LAIDANI
2/28/2023
#1
像这样使用zip
怎么样:
fun compute(l: String, r: String): Int {
return l.zip(r).count { it.first != it.second }
}
评论
0赞
Pragati Bhattad
2/28/2023
这确实缩短了代码,但是想知道是否存在一个内置函数来为我们比较它。谢谢你的回答。寻找另一个。
0赞
JvdV
3/20/2023
这不应该是为了测试问题中的平等性吗?==
2赞
Steyrix
2/28/2023
#2
如果顺序无关紧要,您可以简单地进行计数:
return l.count { it in r }
但是,如果要检查值和索引是否匹配,则无法使用 index 进行转义:
l.forEachIndexed { i, it ->
if(i < r.length && it == r[i]) counter++
}
更新:哦,我刚刚发现有commonPrefixWith
return l.commonPrefixWith(r).length
0赞
lukas.j
2/28/2023
#3
fun String.compute(r: String): Int {
return toCharArray()
.zip(r.toCharArray())
.count { (l, r) -> l != r }
}
假设:
- 字符串的长度相等
- 字符的位置很重要
- 比较区分大小写
0赞
JvdV
3/20/2023
#4
我不认为这是一个可行的选择,但只是发帖,因为我正在玩一些 Kotlin 只是为了学习一点语言:
fun compute(l: String, r: String): Int {
return Regex("(.)(?=.{"+(l.length-1)+"}\\1)").findAll(l+r).count()
}
评论