菜鸡每日一题系列打卡58天
每天一道算法题目
小伙伴们一起留言打卡
坚持就是胜利,我们一起努力!
题目描述(引自LeetCode)
给定一个仅包含大小写字母和空格' '的字符串s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回0。
示例:
输入: "Hello World"
输出: 5
说明:
一个单词是指仅由字母组成、不包含任何空格字符的最大子字符串。
题目分析
这是一道有关字符串子串的题目,根据题意,只需要从字符串末尾向前遍历,找到字符串的最后一个字母,然后再由此向前遍历,遇到第一个空格就得到了答案。
代码实现
class Solution {
public int lengthOfLastWord(String s) {
// 特殊情况处理
if (s == null) return 0;
// 寻找最后一个字母的位置
int end = s.length() - 1;
while (end >= 0 && s.charAt(end) == ' ') end--;
// 如果不存在最后一个字母,则返回0
if (end < 0) return 0;
// 寻找最后一个单词的起始位置
int start = end;
while (start >= 0 && s.charAt(start) != ' ') start--;
// 返回单词长度
return end - start;
}
}
代码分析
对代码进行分析,程序对字符串进行了最多一次遍历,因此,时间复杂度为O(n),而就空间而言,仅仅使用了常数级别的额外空间,因此,空间复杂度为O(1)。
执行结果
学习 | 工作 | 分享
????长按关注“有理想的菜鸡”
只有你想不到,没有你学不到