leetcode-58.最后一个单词的长度

题意

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

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

说明:一个单词是指由字母组成,但不包含任何空格的字符串。

示例:

输入: "Hello World"
输出: 5

输入: "a"
输出: 1

输入: "a b c "
输出: 1

算法

  1. 反向遍历字符串
  2. 如果存在字符不是空格,从此开始计数直到碰到下一个空格;
  3. 否则,返回0.。

code

 1 class Solution {
 2 public:
 3     int lengthOfLastWord(string s) {
 4         int ans = 0;
 5         for(int i=s.length()-1; i>=0; i--)
 6         {
 7             if(s[i] != ' ')
 8             {
 9                 while(s[i] != ' ')
10                 {
11                     ans++;
12                     i--;
13                     if(i < 0)
14                     {
15                         break;
16                     }
17                 }
18                 break; 
19             } 
20         }
21         return ans;
22     }
23 };

 上面代码有些乱,最近更新了一版

源码

算法

1. while循环去掉字符串末尾的所有空格

2. while循环统计最后单词长度(不是空格的累加,遇到空格跳出返回)

 1 class Solution {
 2 public:
 3     int lengthOfLastWord(string s) {
 4         int len = s.length();
 5         if(len == 0)
 6             return len;
 7         
 8         int res = 0, i = len-1;
 9         while(s[i] == ' ' && i >= 0)
10             i--;
11         while(s[i] != ' '&& i >= 0)
12         {
13             res++;
14             i--;
15         }
16             
17         return res;
18     }
19 };