我如何使用 toCharArray() 交换 java 字符串中的 2 个字母?

How would I swap 2 letters in a java string using toCharArray()?

我希望 ab 作为 ba 返回,但我的输出是 a a。我明白为什么我得到那个输出。如果 a[i] < a[j](如果第一个索引 < 第二个索引,这是真的,因为 a < b,则将 b (a[j]) 替换为 a (a[i]))。

我只是想不通如何用数组交换这两个字母。

我怎样才能做到这一点?

public static void solution(String A) {
    char[] a = A.toCharArray();

    for(int i = 0; i < a.length; i++) {
        for(int j = i + 1; j < a.length; j++) {
            if(a[i] < a[j]) {
                a[j] = a[i];
            }
        }
    }

    for(int i = 0; i < a.length; i++) {
        System.out.print(a[i] + " ");
    }
}

public static void main(String args[]) {
    String A = "ab";

    solution(A);
}

您可以使用临时变量并将 a[j] 放入其中,然后用 a[i] 覆盖 a[j],最后用 [=11] 的旧值覆盖 a[i] =] 你存储在临时变量中:

if (a[i] < a[j]) {
    char temp = a[j];
    a[j] = a[i];
    a[i] = temp;
}

你真的想创建一个临时文件来存储你的角色,但是如果你想写更少的代码并且不关心性能,你甚至可以在你的情况下反转字符串,而不是使用 toCharArray , 使用 java 的 StringBuilder 包

    import java.lang.*;

    StringBuilder input = new StringBuilder;
    input.append(A);
    input = input.reverse();
    System.out.print(input);