1.题目
2.知识点
注1:
lastIndexOf()它用于查找指定字符或子字符串在当前字符串中最后一次出现的位置。它的作用是从字符串的末尾向前搜索指定字符或子字符串,并返回其最后一次出现的位置的索引。
(1)例如,在字符串 “Hello, World!” 中,如果我们使用 lastIndexOf(‘o’),它会返回字符 ‘o’ 最后一次出现的位置,即 8。如果我们使用 lastIndexOf(‘z’),因为 ‘z’ 不在字符串中,它会返回 -1。
(2)lastIndexOf() 方法还有一个重载版本,可以指定开始搜索的位置。例如,lastIndexOf(‘o’, 7) 会从索引 7 处开始向前搜索字符 ‘o’,这里会返回 4,因为在索引 7 之前的最后一个 ‘o’ 是在索引 4 处。
Hello, World!"
注2:lastIndex 是 sentence.lastIndexOf(’ ') 的返回值,表示空格在字符串 sentence 中最后一次出现的位置的索引。如果 lastIndex 的值为 -1,这意味着字符串中没有空格,即整个字符串就是最后一个单词。
注3:具体来说,substring() 方法有两个重载版本:
(1)substring(int beginIndex):该方法返回从指定索引 beginIndex(包括该索引处的字符)到字符串末尾的子字符串。
(2)substring(int beginIndex, int endIndex):该方法返回从指定索引 beginIndex(包括该索引处的字符)到索引 endIndex(不包括该索引处的字符)之间的子字符串。
在这里,substring(lastIndex) 使用了第一个重载版本,它的作用是从索引 lastIndex 处(包括该索引处的字符)开始截取字符串,直到字符串的末尾。也就是说,它返回了从指定索引处到字符串末尾的子字符串。
注4:sentence.trim() 是 Java 字符串类中的方法,它用于删除字符串两端的空白字符(空格、制表符、换行符等),并返回删除空白字符后的新字符串。
public class Main {
public static void main(String[] args) {
String sentence = " Hello, World! ";
String trimmedSentence = sentence.trim();
System.out.println("Original Sentence: \"" + sentence + "\"");
System.out.println("Trimmed Sentence: \"" + trimmedSentence + "\"");
}
}
Original Sentence: " Hello, World! "
Trimmed Sentence: "Hello, World!"
注5:
LastIndex 是最后一个空格的索引。但是我们想要获取的是最后一个单词的长度,而不是空格后面的单词。所以我们需要从最后一个空格的下一个位置开始截取字符串,以获取最后一个单词。
举个例子,如果字符串是 “Hello World”,那么最后一个空格的索引是 5(’ ’ 在位置 5),而我们想要获取的是单词 “World”,它从索引 6 开始。所以我们需要从 LastIndex + 1 开始截取字符串。这就是为什么要在 substring() 方法中加上 LastIndex + 1 的原因。
3.代码实现
class Solution {
public int lengthOfLastWord(String s) {
String m = s.trim();//去除字符串两端的空格
int LastIndex=m.lastIndexOf(' ');//找到最后一个单词的起始位置
if(LastIndex==-1)
{return m.length();}
return m.substring(LastIndex+1).length();
}
}