木又同学2020年第26篇解题报告
leetcode第58题:最后一个单词的长度
https://leetcode-cn.com/problems/length-of-last-word/
【题目】
给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。
如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指仅由字母组成、不包含任何空格的 最大子字符串。
示例:
输入: "Hello World"
输出: 5
【思路】
python中使用string的split方法,即可得到每个单词,返回最后一个单词的长度即可。注意的是,只有空格的字符串split后列表元素为空。
普通点的方法呢?我们使用循环,从后往前遍历,找到最后一个字母的位置end;再继续循环,找到第一个字母的位置start;最后返回end-start。
【代码】
python版本
class Solution(object):
def lengthOfLastWord(self, s):
"""
:type s: str
:rtype: int
"""
# the last alphabet
end = len(s) - 1
while end >= 0:
if s[end] == ' ':
end -= 1
else:
break
# the first alphabet
begin = end
while begin >= 0:
if s[begin] != ' ':
begin -= 1
else:
break
return end - begin
C++版本
class Solution {
public:
int lengthOfLastWord(string s) {
// the last alpha
int end = s.size() - 1;
while (end >= 0) {
if (s[end] == ' ')
end--;
else
break;
}
// the first alpha of last word
int begin = end;
while (begin >= 0) {
if (s[begin] != ' ')
begin--;
else
break;
}
return end - begin;
}
};