2025年- H133-Lc131. 反转字符串(字符串)--Java版
1.题目
2.思路
(1)取出前后空格trim()
String s = " hello world ";
s = s.trim();
System.out.println(s); // "hello world"
trim() 会去掉 开头和结尾 的空格,但不会影响中间的空格。
这里字符串开头和结尾没有空格,所以结果还是:
"dog cat fish"↑ ↑3个空格 3个空格
"dog cat fish"
(2)去掉所有空格:replaceAll(" “, “”) 或 replaceAll(”\s+", “”)
String s = "a b c d";
s = s.replaceAll(" ", ""); // 正则匹配空格
System.out.println(s); // "abcd"
(3)按多个空格分割:split(“\s+”)
String s = "dog cat fish";
String[] words = s.trim().split("\\s+"); // 按 1 个或多个空格分割
System.out.println(Arrays.toString(words));
// [dog, cat, fish]
(4)把多个空格压缩成一个:replaceAll(“\s+”, " ")
String s = "dog cat fish";
s = s.replaceAll("\\s+", " ");
System.out.println(s); // "dog cat fish"
使用 StringBuilder 或 StringBuffer 反转整个字符串。反转整个字符串里的字符顺序,而不是按单词顺序反转。
比如 “hello world” → “dlrow olleh”,单词顺序没变,只是字母倒过来了。
String s = "hello world";
String reversed = new StringBuilder(s).reverse().toString();
System.out.println(reversed); // 输出: "dlrow olleh"
3.代码实现
class Solution {public String reverseWords(String s) {//取出首尾空格,再把单词间一个空格或多个空格都当成一个分隔符String[] word=s.trim().split("\\s+");int n=word.length;StringBuffer sb=new StringBuffer();for(int i=n-1;i>=0;i--){sb.append(word[i]);//给中间段的单词加空格if(i!=0){sb.append(" ");}}//return sb.toString().trim();return sb.toString();}
}