欢迎访问宙启技术站
智能推送

Java中如何编写名为reverseString的函数,用于将一个给定字符串反转?

发布时间:2023-06-17 11:30:55

在Java中,可以通过多种方式编写反转字符串的函数,以下是其中的两种实现方法。

方法一:

可以使用StringBuilder类的reverse方法反转字符串,方法如下:

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

解释:首先创建一个StringBuilder对象,接着使用StringBuilder的reverse()方法反转字符串,最后将反转后的字符串转换为String类型并返回。

使用方法一的示例代码如下:

String s = "hello world";
String reversedString = reverseString(s);
System.out.println(reversedString);  // 输出 "dlrow olleh"

方法二:

使用char数组和循环实现反转字符串,方法如下:

public static String reverseString(String str) {
    char[] chars = str.toCharArray();
    int i = 0, j = chars.length - 1;
    while(i < j) {
        char temp = chars[i];
        chars[i] = chars[j];
        chars[j] = temp;
        i++;
        j--;
    }
    return new String(chars);
}

解释:首先将字符串转换为char数组,接着使用两个指针i和j分别指向数组的最左边和最右边,通过循环将左右两个字符进行交换,直到i >= j,最后将交换后的char数组转换为String类型并返回。

使用方法二的示例代码如下:

String s = "hello world";
String reversedString = reverseString(s);
System.out.println(reversedString);  // 输出 "dlrow olleh"

对于这两种方法,它们的时间复杂度都为O(n),其中n为字符串的长度。但使用方法一的空间复杂度要更低,因为它只需要创建一个StringBuilder对象,而方法二需要额外使用一个char数组。