让我们一起啃算法----最后一个单词的长度
最后一个单词的长度(Length-Of-Last-Word)
题干:
给定一个仅包含大小写字母和空格 ‘ ‘ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。
示例:
输入: “Hello World”
输出: 5
周末总是转瞬即逝,周一的早上总是让人打不起精神,所以来一题 简单的leetcode 活络活络思维,新的一周开始啦!
解题思路
题目让我们查找字符串的最后一个单词的长度,很自然能想到的切入点:从右向左遍历字符串。
剩下的考点就是:遇到空字符串如何处理?我们引入一个变量 result 用于标记最后一个单词的长度,初始值设置为 0。
从右向左遍历字符串, 如果遇到空字符串,判断 result 是否为 0,如果为 0,则表示目前没有遇到过单词,如果 result 不为 0,则表示到了最后一个单词的左边界了( 我们是从右向左遍历的 ),返回 result 即可。仔细体会一下这个过程哦。
代码实现
GO 代码实现
func lengthOfLastWord(s string) int {
if "" == s {
return 0
}
strLength := len(s)
result := 0
for i := strLength - 1; i >= 0; i-- {
// 遇到空字符串
if ' ' == s[i] {
// 如果 result 大于 0,则表示到了最后一个单词的左边界,返回结果
if result >0 {
break
} else {
// 如果 result 为 0,则表示目前为止没有遇到过单词,继续从右向左遍历
continue
}
}
result ++
}
return result
}
总结
每天进步一点点,加油!
算法教程项目,每天更新一题,点个 star 支持一下呀:
github.com/wx-satellite/learning-a...
本作品采用《CC 协议》,转载必须注明作者和本文链接
在LeetCode遇到这道题的时候,甚至怀疑是不是错了,和算法没关系一样