【发布时间】:2022-07-14 22:09:49
【问题描述】:
我正在解决反向字符串问题。我想知道为什么交换 2 个字符的辅助函数在我的代码中不起作用。但如果我在 while 循环中编写用于交换的代码,它就可以工作。
class Solution {
public void reverseString(char[] s) {
int left = 0;
int right = s.length - 1;
while (left < right) {
swap(s[left], s[right]);
left++;
right--;
}
}
// not working as expected
public void swap(char a, char b) {
char temp = b;
b = a;
a = temp;
}
}
【问题讨论】:
-
Java 是按值调用的。
a和b是您传入的内容的副本。如果您在swap内更改它们,这些更改不会影响该方法的范围之外的任何其他内容。更改您的代码,以便swap对数组进行操作。