首页 > 其他 > 详细

LeetCode-lengthOfLastWord

时间:2014-10-20 23:02:40      阅读:261      评论:0      收藏:0      [点我收藏+]

题目是求一个字符串中,最后一个单词的长度

例如:

"" = 0

"  " =0

"length of last word    " = 4

这个题目主要的坑在哪里呢,就是要判断一些特殊的情况,这里例举一下:

1.空字符串以及 NULL 判断是必须的。

2.字符串为一个或多个空格,或者最后一个单词后面又跟了空格

 

 1 class Solution {
 2 public:
 3     int lengthOfLastWord(const char *s) {
 4         if (s == NULL) {
 5             return 0;
 6         }
 7     
 8         int result = 0;
 9         
10         // 当前字符 没结束
11         while (*s != \0) {
12             if (*s ==  ) {
13                 while (s != NULL && *s ==  ) {
14                     s++;
15                 }
16             }
17             else {
18                 int cur = 0;
19                 while (*s != \0 && *s !=  ) {
20                     cur++;
21                     s++;
22                 }
23                 result = cur;
24             }
25         }
26         return result;
27     }
28 };

上述代码通过了 Leetcode,如果传递的 字符串是一个obj,还可以通过获取obj.length 从后往前面查找,这里是只传递一个起始的字符指针。

首先进行NULL值的判断,然后当指针 s 不为结束符号 ‘\0‘ 进行遍历,遍历的时候,只有两种情况,一个是遇到空格,另一个是遇到字符,。

遇到的空格可能有多个,即连续的空格,这个时候,可以选择将空格“吃掉”,即多个空格也抽象成一个空格处理。

遇到字符时,即表示,当前是一个单词,至于这个单词有多长,我们一直往后面搜索就可以了,同时用一个临时变量 cur 来保存当前 word 的长度 ,s 遇到空格或者结束符号 ’\0‘ 就先停下来,形成一个 word,然后把 word 传值给 result,因为遇到了空格,所以将接下来的任务交给处理空格的 if 判断来处理。

 

算法总体上抽象为两个分支,遇到空格的情况,以及遇到字符,每次形成一个word,则将其赋值给 result,为什么要用临时变量 cur 呢?

因为如果在 空格判断中另 result = 0,word 判断中 result= word.length,那么就会出现bug,这种bug出现在 字符串尾部有空格的情况下。

 

LeetCode-lengthOfLastWord

原文:http://www.cnblogs.com/wellcheng/p/4039051.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!