题目:最后一个单词的长度(简单)
一、问题描述
给你一个字符串 s,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0 。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
示例 1:
输入:s = "Hello World" 输出:5
示例 2:
输入:s = " " 输出:0
提示:
1 <= s.length <= 104
s
仅有英文字母和空格 ‘ ‘
组成
二、解答过程
首先考虑特殊情况,不存在最后一个单词,那么就是说明这个字符串中没有字母,因为即使输入“ a ”这种字符串那它里面包含的单词就是a
因为题设中的s只由空格和字母组成,所以特殊情况只可能是字符串为空,或者字符串中只有空格。
反正要返回最后一个单词的长度,不如从后向前遍历,相当于遍历到第一个单词就停止。
为了方便可以定义两个指针,一个指针总是指向最后一个单词单词的末尾,另一个指针总是指向最后一个单词的开头的前一个位置。最后只要把两个指针相减就能求出单词的长度了
按照上述思想尝试写一下代码
运行结果还是很令人满意的
三、总结
这道题不算难,但是方法很巧妙,我一开始执意于从前向后遍历,但是再查看提示后才明白了既然问最后一个单词,可以直接从后向前遍历就很方便,要做的判断也少很多。
通过这道题可以总结出来,如果要求某个数组末尾的某些元素可以尝试对数组逆序遍历,这样相当于把数组颠倒。双指针可以简化很多操作,在做算法时需要多尝试双指针。
leetcode每日一题(2021.5.14)——最后一个单词的长度
原文:https://www.cnblogs.com/zyq79434/p/14770354.html