leetcode 58 Length of Last Word(最后一个单词长度)

题目要求:

给一个包含大写或者小写以及空格的字符串,返回这个串最后一个单词的长度。如果最后一个的单词不存在,那么返回0。

注意:一个单词意味着,连续字母之间没有空格

示例:

Example 1

Input : "Hello World"
Output : 5

思路

既然题目让求最后一个单词的长度,那么我们就从最后一位开始遍历,在输入正常的情况下( 先不考虑空串,最后一位是空格的情况我们直接遍历,只要当前元素不是空格,就将长度+1,直到遇到空格,我们就退出,返回长度即可。

本题如果想到空格来作为解决关键很容易得到解题思路,但这样还不够AC,其实本题易出错的点也是空格的判定,如果遇到空格就返回的话,那么最后一位(或者几位)都是空格怎么办?如”a ",实际输出1,按照上述思路却为0。所以要在遇到空格的时候再加个判断条件(如果当前计数长度为0,那么不return继续遍历),这样就能顺利AC啦= = 。

主要代码 ( C++ ):

// leetcode 009
// palindrome number
class Solution {
public:
    int lengthOfLastWord(string s) {
        int len = s.length();
        int count = 0;
        for(int i=len-1; i>=0; --i)
        {
            if(s[i] != ' ') // 思路 --> 从最后一位向前遍历如果不是空格,计数+1
                count++;
            else
                // 防止最后几位是空格没有计数,所以要加个限制条件。
                // 不能直接return count, 否接结果为0,如"a "
                if(count==0) continue;
                else  return count;
        }
        
        return count; // 如果字符串为空,那么直接返回0,所以不需要在前面进行判断。
    }
        
};

原题链接:https://leetcode.com/problems/length-of-last-word/

猜你喜欢

转载自blog.csdn.net/qq_37466121/article/details/85083700