简介
反转字符串是一个常见的面试问题。有几种算法可以解决这个问题,包括:
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 是一个可