题目来源:LintCode
原题地址:http://www.lintcode.com/zh-cn/problem/length-of-last-word/#
题目:
给定一个字符串, 包含大小写字母、空格' ' ,请返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
您在真实的面试中是否遇到过这个题?
样例
给定 s = "Hello World" ,返回 5 。
注意
一个单词的界定是,由字母组成,但不包含任何的空格。
难度级别: 容易
思路分析: 这个题应该是很简单的吧,原来在别的地方见过,不知道为什么当时写这个题是,感觉思路没有今天这么清晰。。。 我的做法是: 1.一次遍历字符串就可以了 2.设置一个临时变量,记录当前单词的长度; 3.设置一个结果变量,存放最终的结果; 4.关键逻辑是:当遍历到空格时,将临时变量的值赋给结果变量,并且将临时变量置为零;当遍历到非空格时,将临时变量的值加1; 需要注意的是,有可能最后一个单词之后没有空格,所以4中的逻辑并不能将此情况计算在内,因此需要补充一个判断; 在遍历结束之后,若临时变量为零(最后一个单词之后还有一个空格),则不作处理;若临时变量非零,则将临时变量的值赋给结果变量。
实现代码:
class Solution
{
public:
/**
* @param s A string
* @return the length of last word
*/
int lengthOfLastWord(string& s)
{
int tLen = 0;
//int maxLen = 0;
int lastLen = 0;
for (int i = 0; i < s.size(); i++)
{
if (s[i] != ' ')
{
tLen++;
/*if (tLen > maxLen)
{
maxLen = tLen;
}*/
} else
{
lastLen = tLen;
tLen = 0;
}
}
if (tLen != 0)
{
lastLen = tLen;
}
return lastLen;
}
};
代码说明: 在分析中,已经将思路解释的较为清楚了。 需要说明的是,注释掉的部分是我原来审题没注意看错了,我以为要求得是最长单词。。。
|