找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1624|回复: 4
收起左侧

[米群网刷题小分队] 【LeetCode小分队】【Length of Last Word】-【刷题第一弹2014】

[复制链接]

22

主题

6

精华

612

积分

超级会员

Rank: 4

积分
612
发表于 10-12-2014 01:42 AM | 显示全部楼层 |阅读模式

亲!马上注册或者登录会查看更多内容!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Leetcode通道:https://oj.leetcode.com/problems/length-of-last-word/

题目:

Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string.

If the last word does not exist, return 0.

Note: A word is defined as a character sequence consists of non-space characters only.

For example,
Given s = "Hello World",
return 5.


思路:

从后往前,先去除空格,从遇到第一个字符开始,计算最后一个单词的长度

代码:

  1. public int lengthOfLastWord(String s) {  
  2.    int len = 0, last = s.length()-1;  
  3.    while (last>=0 && s.charAt(last) == ' ') last--;  
  4.    while (last>=0 && s.charAt(last--) != ' ') ++len;  
  5.    return len;  
  6. }  
复制代码

时间复杂度:O(n), 空间复杂度:O(1)


本帖被以下淘专辑推荐:

18

主题

9

精华

522

积分

超级会员

Rank: 4

积分
522
发表于 10-12-2014 06:11 PM | 显示全部楼层
刚做过这道题,不需要先去除空格吧:
  1. class Solution {
  2. public:
  3.     int lengthOfLastWord(const char *s) {
  4.         int res = 0;
  5.         int length = strlen(s);
  6.         for (int i = length - 1; i >= 0; --i)
  7.             if (s[i] != ' ') res++;
  8.             else if(res > 0) break;
  9.         return res;
  10.     }
  11. };
复制代码
回复 支持 1 反对 0

使用道具 举报

22

主题

6

精华

612

积分

超级会员

Rank: 4

积分
612
 楼主| 发表于 10-12-2014 09:05 PM | 显示全部楼层
dolremi 发表于 10-12-2014 06:11 PM
刚做过这道题,不需要先去除空格吧:

笔误,应该说是遇到空格,忽略掉继续从后往前递增
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表