给定一个字符串,逐个翻转字符串中的每个单词。 示例 1: 输入: "the sky is blue" 输出: "blue is sky the" 示例 2: 输入: " hello world! " 输出: "world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 示例 3: 输入: "a good example" 输出: "example good a" 解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
时间: 2023-07-21 18:08:57 浏览: 102
可以使用 Java 的字符串操作和正则表达式来逐个翻转字符串中的每个单词。以下是一个实现的示例代码:
```java
public class WordReverse {
public static void main(String[] args) {
String str1 = "the sky is blue";
String str2 = " hello world! ";
String str3 = "a good example";
String reversedStr1 = reverseWords(str1);
String reversedStr2 = reverseWords(str2);
String reversedStr3 = reverseWords(str3);
System.out.println(reversedStr1); // 输出:blue is sky the
System.out.println(reversedStr2); // 输出:world! hello
System.out.println(reversedStr3); // 输出:example good a
}
public static String reverseWords(String s) {
// 去除首尾多余的空格,并将字符串按照空格分割成单词数组
String[] words = s.trim().split("\\s+");
StringBuilder sb = new StringBuilder();
// 从后往前遍历单词数组,将每个单词添加到结果字符串中
for (int i = words.length - 1; i >= 0; i--) {
sb.append(words[i]);
if (i > 0) {
sb.append(" ");
}
}
return sb.toString();
}
}
```
在上面的示例代码中,`reverseWords()` 方法接受一个字符串参数 `s`,首先使用 `trim()` 方法去除字符串两端的空格,然后使用 `split("\\s+")` 方法按照一个或多个空格将字符串分割成单词数组。
接下来,使用 `StringBuilder` 创建一个可变字符串 `sb`,从后往前遍历单词数组,将每个单词添加到 `sb` 中,并在单词之间添加一个空格。
最后,使用 `toString()` 方法将 `sb` 转换为字符串并返回。
运行上面的示例代码,可以得到预期的输出结果。
希望这个示例代码能帮助你解决问题!如果还有其他问题,请随时提问。
阅读全文