For loop 如何在kotlin中重新启动for循环
我在Kotlin中有这个嵌套循环的情况,假设有两个字符串“abcdef”和“bfihja”。我正在使用for循环逐字符比较这两个字符。如果存在匹配项,则将从每个字符串中删除该字符,“S2”的迭代应从开始处开始For loop 如何在kotlin中重新启动for循环,for-loop,kotlin,iteration,restart,For Loop,Kotlin,Iteration,Restart,我在Kotlin中有这个嵌套循环的情况,假设有两个字符串“abcdef”和“bfihja”。我正在使用for循环逐字符比较这两个字符。如果存在匹配项,则将从每个字符串中删除该字符,“S2”的迭代应从开始处开始 var S1 = "abcdef" var S2 = "bfihja" for(i in S1.indices) { for(j in S2.indices){ if(S1[i]==S2[j
var S1 = "abcdef"
var S2 = "bfihja"
for(i in S1.indices) {
for(j in S2.indices){
if(S1[i]==S2[j]) {
"character removed from each"
}
我遇到的问题是,当字符匹配时,“S2”字符串的比较应该从头开始。我找不到重新启动它的方法。您应该在内部for循环中使用一个范围为0到
length-of-S2
的常规for循环,当您要“重置”for循环时,只需将迭代器变量重置为0。您可以使用一个标记为外部while循环。通过在外循环上使用continue
,您可以重新启动迭代。您可以在外部迭代之后放置break
,以便在完成时退出while循环
outer@while (true) {
for (i in S1.indices) {
for (j in S2.indices) {
if (S1[i] == S2[j]) {
S1 = StringBuilder(S1).deleteCharAt(i).toString()
S2 = StringBuilder(S2).deleteCharAt(j).toString()
continue@outer
}
}
}
break
}
如何重置迭代器?对于这个任务,val“j”不能更改,我认为如果您先对字符串排序,代码可能会更清晰、更高效。然后,只需对两个字符串进行一次扫描。谢谢,这很有效。如果我理解正确,那么这样做的目的是,当出现匹配时,字符串将被更新并使用“continue@outer“整个循环将以新字符串重新开始,当外部for循环结束时,它将向右中断..”。。??如果我错了,请纠正我。