diff --git a/0058-length-Of-Last-Word/Animation/0058.gif b/0058-length-Of-Last-Word/Animation/0058.gif new file mode 100644 index 0000000..753bbf5 Binary files /dev/null and b/0058-length-Of-Last-Word/Animation/0058.gif differ diff --git a/0058-length-Of-Last-Word/Article/0058-length-Of-Last-Word.md b/0058-length-Of-Last-Word/Article/0058-length-Of-Last-Word.md new file mode 100644 index 0000000..9086119 --- /dev/null +++ b/0058-length-Of-Last-Word/Article/0058-length-Of-Last-Word.md @@ -0,0 +1,74 @@ +> 本文首发于公众号「图解面试算法」,是 [图解 LeetCode ]() 系列文章之一。 +> +> 个人博客:https://www.zhangxiaoshuai.fun + +**本题选自leetcode第58题,easy难度,目前通过率33.0%** + +### 题目描述: +```txt +给定一个仅包含大小写字母和空格' '的字符串s,返回其最后一个单词的长度。 +如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。 +如果不存在最后一个单词,请返回0。 +说明:一个单词是指仅由字母组成、不包含任何空格字符的最大子字符串。 + +示例: +输入:"Hello World" +输出:5 +``` + +### 题目分析: + +既然需要求出最后一个单词的长度,那我们直接从**字符串的末尾**开始好了; +这里末尾有两种情况:有空格和没有空格 + +``` +(1)有空格:我们从末尾忽略掉空格,然后找到第一个遇见的字符(遇到第一个空格或者遍历完整个字符串为止) +(2)无空格:直接从末尾往前寻找即可(遇到第一个空格或者遍历完整个字符串为止) +``` + +### 动画gif演示: + +![](../Animation/0058.gif) + +### 代码: + +**The first version** + +```java +public int lengthOfLastWord(String s) { + if (s.length()==0) { + return 0; + } + int index = 0; + int temp = 0; + int p = s.length()-1; + while ((p-index >=0) && s.charAt(p-index) == 32) index++; + for (int i = p-index;i >= 0;i--) { + if (s.charAt(i) != 32){ + temp++; + continue; + } + break; + } + return temp; +} +``` + +**2.代码:** + +**The second version** + +```java +public int lengthOfLastWord(String s) { + int len = 0; + for (int i = s.length() - 1; i >= 0; i--) { + if (s.charAt(i) != ' ') { + len++; + } else if (len != 0) { + return len; + } + } + return len; +} +``` +