LeetCode算法题58:最后一个单词的长度解析

给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
说明: 一个单词是指由字母组成,但不包含任何空格的字符串。
示例:

输入: "Hello World"
输出: 5

这个题一开始误解了题目的意思,以为最后一个字符是空格的话也要返回0。其实是不论任何情况都返回最后一个单词的长度。这样的话就比较好想了,设定一个计数器,然后遍历整个字符串,在遇到非空格的时候自加1,遇到空格时清零,这样就一直保存了空格前一个字符串的长度,但是遇到空格时要注意两点,如果这个空格是最后一个空格时不可以清零,如果有连续的空格,也就是下一个字符还是空格时,也不清零,直接跳过直到最后一个空格才清零。最后直接返回计数值即可。
C++源代码:

class Solution {
public:
    int lengthOfLastWord(string s) {
        int result=0;
        for (int i=0;i<s.length();i++)
        {
            if (s[i] == ' ')
            {
                if (i+1==s.length()||s[i+1]==' ')
                    continue;
                else
                {
                    result = 0;
                    continue;
                }
            }
            result++;   
        }
        return result;
    }
};

python3源代码:

class Solution:
    def lengthOfLastWord(self, s):
        """
        :type s: str
        :rtype: int
        """
        return len(s.strip(' ').split(' ')[-1])

pyhton3写这个算法太简单了,因为字符串有一个方法是分割字符串方法split(),这里只要用空格将字符串分割然后返回最后一个字符串的长度即可,另外要注意的是分割之前先用strip()方法将字符串最后的空格删除掉,否则会分割出一个空字符串在最后。

猜你喜欢

转载自blog.csdn.net/x603560617/article/details/83548686