题目要求:
给一个包含大写或者小写以及空格的字符串,返回这个串最后一个单词的长度。如果最后一个的单词不存在,那么返回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,所以不需要在前面进行判断。
}
};