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

问题描述 投票:2回答:2

我希望ab作为ba返回,但我的输出是a a。我理解为什么我得到那个输出。如果a[i] < a[j](如果第一个指数<第二个指数,因为a <b,这是真的,那么用(a[j])替换b(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);
}
java string algorithm debugging swap
2个回答
3
投票

你可以使用一个临时变量并在其中放置a[j],然后用a[j]覆盖a[i],最后用你存储在临时变量中的旧值a[i]覆盖a[j]

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

1
投票

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

    import java.lang.*;

    StringBuilder input = new StringBuilder;
    input.append(A);
    input = input.reverse();
    System.out.print(input);
© www.soinside.com 2019 - 2024. All rights reserved.