Algorithm
class Solution { public String replaceSpaces(String S, int length) { if (S == null || S.length() == 0) { return S; } char[] str = S.toCharArray(); int preIndex = length - 1; int lastIndex = preIndex; for(int i=0; i < length; i++) { if(str[i] == ' ') { lastIndex +=2; } } while(lastIndex != preIndex) { if(str[preIndex] != ' ') { str[lastIndex --] = str[preIndex --]; } else { str[lastIndex --] = '0'; str[lastIndex --] = '2'; str[lastIndex --] = '%'; preIndex --; } } return String.valueOf(str).trim(); }}
Review
Avoid Callback Hell With Kotlin Coroutines
Tip
在Kotlin中遍历数组经常使用ForEach等api,但是如何像java那样for手动循环遍历呢?通过..和downTo来实现:
fun main() {
// 正序遍历 1 到 5
for (i in 1..5) {
println(i)
}
// 倒序遍历 5 到 1,步长为 1
for (i in 5 downTo 1) {
println(i)
}
}
当然也可以通过加step控制步数,如i in 10 downTo 0 step 2