Merge pull request #74 from xiaoshuai96/master

solved @xiaoshuai96
This commit is contained in:
程序员吴师兄 2020-04-29 14:39:19 +08:00 committed by GitHub
commit 84a8d074b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 74 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@ -0,0 +1,74 @@
> 本文首发于公众号图解面试算法 [图解 LeetCode ](<https://github.com/MisterBooo/LeetCodeAnimation>) 系列文章之一
>
> 个人博客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;
}
```