当前位置: 首页 > 知识库问答 >
问题:

char的helper函数未按预期工作[重复]

支洋
2023-03-14

我正在解决反向字符串问题。我想知道为什么交换2 char的帮助函数在我的代码中不起作用。但如果我在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;
    }
}

共有1个答案

阚允晨
2023-03-14

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

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

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

然后这样称呼它:

swap(s, left, right);
 类似资料:
  • 我有一个groovy函数,它执行一些日期操作。返回12个月前的日期。该日期被编码并存储到变量中。 片段: 上述代码与JSR223采样器配合使用效果良好。此外,变量名及其值将显示在调试采样器中。 但是,当我将此代码与GET HTTP请求一起使用时。该值不会被替换。 请求: 除groovy部分外,所有值都被正确替换。我错过了什么吗。调试采样器不显示名为Policy_ExpiryDate的变量。

  • 我目前正试图研究并发性,特别是“volatile”关键字。 通过声明计数器变量为volatile,所有对计数器变量的写入都将立即写回主存。此外,计数器变量的所有读取都将直接从主存中读取。下面是计数器变量的volatile声明的外观 和 当线程写入易失性变量时,不仅易失性变量本身会被写入主内存。此外,线程在写入易失性变量之前更改的所有其他变量也会刷新到主内存中。当一个线程读取一个易失性变量时,它还将

  • 我有一个数组,我试图删除数据的基础上,但部分数据被拉出和值填充的地方。 大堆 现在我想提取这些数据 完全基于 更新的命令: 请暂时忽略括号。目前在我得到的输出中 控制器中的代码:

  • 我正在使用spring Roo并希望访问Controller类中的一个bean,该类在ApplicationContext.xml中具有以下配置: 配置类本身是: 在我的Controller中,我认为一个简单的Autowired注释应该可以完成这项工作 在启动过程中,spring在setSkipWeeks方法中打印消息。不幸的是,每当我在控制器中调用config.getSkipWeeks()时,它

  • 当我运行以下程序时,它只打印 然而,从Java 8的equalsIgnoreCase文档中我们发现: 如果以下至少一项为真,则两个字符c1和c2被视为相同的忽略情况: •对每个字符应用java.lang.character.ToUpperCase(char)方法会产生相同的结果 所以我的问题是为什么这个程序不打印 在这两种操作中,都使用了大写字符。

  • 我试图使用来传输我根据前面的问题设置的自定义标头。 我在文件中读到... 我的属性包括: