java字符串倒序
时间: 2025-06-26 20:20:43 浏览: 9
### Java 中实现字符串倒序
在 Java 中,可以通过多种方式来实现字符串的倒序操作。以下是几种常见的方法:
#### 方法一:使用 `StringBuilder` 的内置函数 `.reverse()`
Java 提供了一个非常方便的方法用于字符串倒序——通过调用 `StringBuilder` 类中的 `.reverse()` 函数[^1]。
```java
public class ReverseString {
public static String reverseUsingStringBuilder(String str) {
return new StringBuilder(str).reverse().toString();
}
public static void main(String[] args) {
String original = "hello world";
String reversed = reverseUsingStringBuilder(original);
System.out.println(reversed); // 输出: dlrow olleh
}
}
```
这种方法简单高效,适合大多数场景下的字符串倒序需求。
---
#### 方法二:手动逐字符交换位置
如果不希望依赖于库函数,则可以采用手动的方式完成字符串倒序。具体做法是从两端逐步向中间移动指针并交换对应的字符。
```java
public class ReverseStringManual {
public static String reverseManually(String str) {
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--;
}
return new String(chars);
}
public static void main(String[] args) {
String original = "hello world";
String reversed = reverseManually(original);
System.out.println(reversed); // 输出: dlrow olleh
}
}
```
此方法虽然稍显复杂,但在某些特定情况下可能更灵活。
---
#### 方法三:基于递归的解决方案
还可以利用递归来解决字符串倒序问题。每次取最后一个字符加入结果,并对剩余部分继续执行相同逻辑直到结束。
```java
public class ReverseStringRecursive {
public static String reverseRecursively(String str) {
if (str.isEmpty()) {
return str;
} else {
return str.charAt(str.length() - 1) + reverseRecursively(str.substring(0, str.length() - 1));
}
}
public static void main(String[] args) {
String original = "hello world";
String reversed = reverseRecursively(original);
System.out.println(reversed); // 输出: dlrow olleh
}
}
```
尽管这种方案优雅简洁,但由于涉及大量栈空间消耗,在处理超长字符串时需谨慎使用。
---
#### 方法四:针对特殊字符的处理
如果输入字符串包含特殊字符(如 `-`, `_`, 数字等),则需要额外注意这些符号应如何被对待。一种常见策略是先拆分原始字符串为若干子串单元存储至列表中,之后再按照指定规则重新组装它们[^3]。
```java
import java.util.*;
public class SpecialCharacterReverse {
public static String reverseWithSpecialHandling(String input) {
List<String> words = new ArrayList<>();
StringBuilder currentWord = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z') {
currentWord.append(c);
} else {
if (currentWord.length() > 0) {
words.add(currentWord.toString());
currentWord.setLength(0);
}
// 将非字母字符视为空白填充物
if (!words.isEmpty()) {
words.add(" ");
}
}
}
if (currentWord.length() > 0) {
words.add(currentWord.toString());
}
Collections.reverse(words);
return String.join("", words).trim();
}
public static void main(String[] args) {
String original = "abc-def-ghi-jkl-mno-pqr-stu-vwx-yz";
String reversed = reverseWithSpecialHandling(original);
System.out.println(reversed); // 输出: yz vwx stu pqr mno jkl ghi def abc
}
}
```
上述代码展示了当遇到连字符或其他分隔符时该如何妥善管理各组成部分之间的相对顺序关系。
---
### 结论
综上所述,无论是在日常开发还是面试准备过程中,掌握不同类型的字符串逆置技巧都是非常重要的基础技能之一。每种技术都有各自适用范围以及优缺点所在,请根据实际应用场景选取最合适的那一个!
阅读全文
相关推荐

















