【问题标题】:helper function for char does not work as expectedchar 的辅助函数无法按预期工作
【发布时间】: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 是按值调用的。 ab 是您传入的内容的副本。如果您在 swap 内更改它们,这些更改不会影响该方法的范围之外的任何其他内容。更改您的代码,以便 swap 对数组进行操作。

标签: java arrays string


【解决方案1】:

Java 是按值调用的。在swapab 中是您传入的内容的副本。如果您在swap 中更改它们,这些更改不会影响该方法范围内的任何其他内容。

更改您的 swap 方法,使其直接对数组进行操作:

public void swap(char[] s, int a, in b) {
    char temp = s[b];
    s[b] = s[a];
    s[a] = temp;
}

然后这样称呼它:

swap(s, left, right);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    相关资源
    最近更新 更多