首页 > 解决方案 > 如何在java中反转字符串,输入是ATGC,预期输出是GCAT

问题描述

import java.io.*;
import java.util.*;

public class CandidateCode {

    public static void main(String args[]) {
        String input = "ATGC";
        char[] temparray = input.toCharArray();
        int left, right;
        right = temparray.length - 2;

        for (left = 0; left < right; left++, right--) {
            char temp = temparray[left];
            temparray[left] = temparray[right];
            temparray[right] = temp;
        }

        for (char c : temparray)
            System.out.print(c);

        System.out.println();
    }

}

当前输出显示为 GTAC,但我需要 GCAT 的结果。我怎么能做到这一点。请让我知道我必须进一步改变什么。我无法得到,因为我现在尝试过。

标签: javastringchar

解决方案


的使用reverse()方法StringBuilder

public static String reverse(String str) {
    return new StringBuilder(str).reverse().toString();
}

for loop从字符串的末尾开始使用

public static String reverse(String str) {
    StringBuilder buf = new StringBuilder(str.length());

    for (int i = str.length() - 1; i >= 0; i--)
        buf.append(str.charAt(i));

    return buf.toString();
}

利用streams

public static String reverse(String str) {
    return IntStream.range(0, str.length())
                    .mapToObj(i -> String.valueOf(str.charAt(str.length() - i - 1)))
                        .collect(Collectors.joining());
}

char[]与交换一起使用

public static String reverse(String str) {
    char[] chars = str.toCharArray();

    for(int i = 0, j = str.length() - 1; i < j; i++, j--) {
        char ch = chars[i];
        chars[i] = chars[j];
        chars[j] = ch;
    }

    return new String(chars);
}

直接输出到控制台

public static void reverse(String str) {
    for (int i = str.length() - 1; i >= 0; i--)
        System.out.print(str.charAt(i));
    System.out.println();
}

测试:

public static void main(String... args) {
    System.out.println(reverse("ATGC"));
}

输出:

"ATGC" -> "CGTA"

推荐阅读