最后一个单词的长度(LintCode)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:57   2207   0
题目来源:LintCode

原题地址:http://www.lintcode.com/zh-cn/problem/length-of-last-word/#

题目:

给定一个字符串, 包含大小写字母、空格' ',请返回其最后一个单词的长度。

如果不存在最后一个单词,请返回 0

您在真实的面试中是否遇到过这个题?
Yes
样例

给定 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;
 }
};



代码说明:
在分析中,已经将思路解释的较为清楚了。
需要说明的是,注释掉的部分是我原来审题没注意看错了,我以为要求得是最长单词。。。
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP