LeetCode: 58. Length of Last Word

34 篇文章 0 订阅

051101

题目

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.

Example:

Input: "Hello World"
Output: 5

我的解题思路

题意:这道题比较简单,就是返回一个字符串中的最后一个单词长度,在有单词的情况下,即使最后的字符为空,也仍然要返回最后一个单词的长度。

思路:先判断字符串的长度,如果为0则直接返回0;否则依次计算每个单词的长度,返回最后一个的。

class Solution {
public:
    int lengthOfLastWord(string s) {
        if(s.length()==0) return 0;
        
        int m=0;
        int last_one=0;
        for(int i=0; i<s.length(); i++){
            if(s[i]==' ') {
                if(m!=0)  last_one = m;
                m=0;
            }
            else {
                m=m+1;
                if(i==s.length()-1) last_one = m;
            }
        }
        return last_one;
    }
};

刚刚在写解题思路的时候,突然想到既然是返回最后一个单词的长度,那我反过来遍历会更快鸭!反过来需要注意对最后字符为‘ ’的处理就好!

class Solution {
public:
    int lengthOfLastWord(string s) {
        if(s.length()==0) return 0;
        int m=0;
        for(int i=s.length()-1; i>=0; i--){
            if(s[i]==' '){
                if(m!=0) return m;
                else continue;
            } 
            else m+=1;    
        }
        return m;
    }
};

刚刚去看了大佬的解法,虽然开销上可能差不多,但是大佬的代码看起来很舒服!

class Solution {
public:
    int lengthOfLastWord(string s) { 
        int len = 0, tail = s.length() - 1;
        while (tail >= 0 && s[tail] == ' ') tail--;
        while (tail >= 0 && s[tail] != ' ') {
            len++;
            tail--;
        }
        return len;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值