一、题目概述
二、思路方向
要解决这个问题,你可以通过遍历字符串
s
并从后往前计数的方式来实现。但更简洁且易于理解的方法是,首先去除字符串尾部的空格(如果有的话),然后找到最后一个单词的起始位置,并计算其长度。
三、代码实现
public class Solution { public int lengthOfLastWord(String s) { // 去除字符串尾部的空格 s = s.trim(); if (s.isEmpty()) { // 如果字符串为空(包括只有空格的情况),则返回0 return 0; } // 从字符串末尾开始,找到第一个空格的位置 int lastSpaceIndex = s.lastIndexOf(' '); // 如果找不到空格(即整个字符串就是一个单词),则返回字符串的长度 if (lastSpaceIndex == -1) { return s.length(); } // 否则,返回最后一个单词的长度,即最后一个空格之后的字符数 return s.length() - lastSpaceIndex - 1; } public static void main(String[] args) { Solution solution = new Solution(); String s = "Hello World"; System.out.println(solution.lengthOfLastWord(s)); // 输出 5 s = " fly me to the moon "; System.out.println(solution.lengthOfLastWord(s)); // 输出 4 s = "luffy is still joyboy"; System.out.println(solution.lengthOfLastWord(s)); // 输出 6 s = " "; System.out.println(solution.lengthOfLastWord(s)); // 输出 0 }
}
执行结果:
四、小结
这段代码首先使用
trim()
方法去除字符串两端的空格,然后检查处理后的字符串是否为空。如果为空,则直接返回0。接下来,使用lastIndexOf(' ')
方法找到最后一个空格的位置。如果找不到空格(即整个字符串就是一个单词),则返回整个字符串的长度。如果找到了空格,则返回最后一个空格之后的所有字符的长度,即最后一个单词的长度。
结语
勇者并非无所畏惧
而是即便害怕也选择前行
!!!