1.题目描述
2.知识点
1)用StringBuilder的方法 实现可变字符串结果
最后返回的时候用.toString的方法
2)在Java中使用StringBuilder的toString()方法时,它会返回StringBuilder对象当前包含的所有字符序列的字符串表示。
在我们的例子中,sb是一个StringBuilder对象,我们使用append()方法向它添加反转后的字符。最后,当我们调用sb.toString()时,它会返回StringBuilder对象中的字符序列作为一个字符串。
3)public class HelloWorld {
public static void main(String []args) {
StringBuilder sb=new StringBuilder();
String s=“Hello world!”;
String[] words=s.split(" “);
for(int i=0;i<words.length;i++) //对字符串数组进行遍历????
{
System.out.println(words[i]+” ");//遍历字符串数组的每个元素 words[i]
}
}
}
对于数组的索引,通常我们使用数组的长度 array.length,而不是 array.length() - 1。因为数组的索引是从 0 开始的,所以最后一个元素的索引实际上是 array.length - 1。
在你的代码中,words.length() 返回的是数组的长度,而数组的索引从 0 开始。因此,words.length() - 1 会是最后一个单词的索引,但是在循环中你应该使用 words.length 来遍历整个数组。
4)加强for循环
for(String word : words) {
System.out.println(word + " ");
}
5)
在 Java 中,String 类型没有 reverse() 方法。你需要先将每个单词转换为 StringBuilder 对象,然后使用 reverse() 方法。
3.代码实现
class Solution {
public String reverseWords(String s) {
StringBuilder sb=new StringBuilder();// // 创建一个新的 StringBuilder 对象,并将当前单词初始化为其内容
String[] words=s.split(" ");
for(int i=0;i<words.length;i++)
{
StringBuilder Rw=new StringBuilder(words[i]);
//创建一个新的 StringBuilder 对象 reversedWord,并将当前单词 words[i] 初始化为其内容。
Rw.reverse();//使用 reverse() 方法反转当前单词 reversedWord
sb.append(Rw.toString()).append(" ");//将反转后的单词追加到 StringBuilder 对象 sb 的末尾,并追加一个空格。
}
return sb.toString().trim();//将字符序列转换成字符串,去掉结果字符串末尾的多余空格,并返回结果。
}
}
4.具体例子
(1)String[] words = s.split(" ");: 将输入字符串 s 按空格分割成单词数组 words。
words = {“Hello”, “world!”}
StringBuilder sb = new StringBuilder();: 创建一个新的 StringBuilder 对象 sb。
(2)sb = “”
for (int i = 0; i < words.length; i++) { … }: 使用传统的 for 循环遍历单词数组 words。
第一次循环:
i = 0
words[0] = “Hello”
reversedWord = “olleH”
sb = "olleH "
第二次循环:
i = 1
words[1] = “world!”
reversedWord = “!dlrow”
sb = "olleH !dlrow "
(3)return sb.toString().trim();: 去掉结果字符串末尾的多余空格,并返回结果。
返回值为 “olleH !dlrow”