static void reverseString(String input) {
char[] inputArray = input.toCharArray();
char[] result = new char[inputArray.length];
for (int i = 0; i < inputArray.length; i++) {
if (inputArray[i] == ' ') {
result[i] = ' ';
}
}
int j = result.length - 1;
for (int i = 0; i < inputArray.length; i++) {
if (inputArray[i] != ' ') {
if (result[j] == ' ') {
j--;
}
result[j] = inputArray[i];
j--;
}
}
System.out.println(input + " --> " + String.valueOf(result));
}
CAn有人解释了这两个for循环是如何工作的,感到困惑。还有其他优化的代码吗?
由于已经存储了空格,因此在第二个循环中将其余字符串反转。
在第二个循环中使用if语句忽略输入数组中存在的空格。当在结果数组中遇到空格时反转get时,它通过减小j的值和增大i的值,移至下一个索引位置,以相反的顺序存储剩余的字符串。