如何反转给定的字符串?

简介: 【8月更文挑战第23天】

简介

反转字符串是一个常见的面试问题。有几种算法可以解决这个问题,包括:

1. 字符数组

我们可以将字符串转换为字符数组,然后逐个交换数组中的元素。

示例:

public class Example {
   
    public static void main(String[] args) {
   
        String str = "Hello world";

        // 将字符串转换为字符数组
        char[] chars = str.toCharArray();

        // 交换数组中的元素
        int left = 0;
        int right = chars.length - 1;
        while (left < right) {
   
            char temp = chars[left];
            chars[left] = chars[right];
            chars[right] = temp;
            left++;
            right--;
        }

        // 将字符数组转换为字符串
        String reversedStr = new String(chars);

        System.out.println("反转后的字符串:" + reversedStr);
    }
}

输出:

反转后的字符串:dlrow olleH

2. 递归

我们可以使用递归来反转字符串。基本情况是字符串长度为 0 或 1,在这种情况下,我们返回字符串本身。否则,我们交换字符串的第一个和最后一个字符,并递归地反转剩余的字符串。

示例:

public class Example {
   
    public static void main(String[] args) {
   
        String str = "Hello world";

        // 调用递归函数反转字符串
        String reversedStr = reverse(str);

        System.out.println("反转后的字符串:" + reversedStr);
    }

    public static String reverse(String str) {
   
        if (str.length() == 0 || str.length() == 1) {
   
            return str;
        } else {
   
            return str.charAt(str.length() - 1) + reverse(str.substring(0, str.length() - 1));
        }
    }
}

输出:

反转后的字符串:dlrow olleH

3. StringBuilder

我们可以使用 StringBuilder 类来反转字符串。StringBuilder 是一个可

目录
相关文章
|
11月前
|
索引
【LeetCode】917. 仅仅反转字母、387. 字符串中的第一个唯一字符
目录 917. 仅仅反转字母 387. 字符串中的第一个唯一字符
40 0
|
3月前
7.整数反转
7.整数反转
|
4月前
|
索引
Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引
Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引
|
4月前
|
C++ 索引
字符串中的第一个唯一字符(C++)
字符串中的第一个唯一字符(C++)
50 0
|
4月前
|
存储 C++
整数反转(C++)
整数反转(C++)
25 0
字符串转数组、数组转字符串、给第一个单词色值
字符串转数组、数组转字符串、给第一个单词色值
|
算法
【算法】手摇算法反转部分字符串
【算法】手摇算法反转部分字符串
47 0
​判断给定字符序列是否是回文
​判断给定字符序列是否是回文
69 0
|
索引
字符串中的第一个唯一字符
字符串中的第一个唯一字符
66 0
|
存储
整数反转1
整数反转1
61 0