LeetCode 之 Length of Last Word — C 实现

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.

给定一个只包含大小写字母和空格的字符串,返回最后一个 word 的长度。

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

说明:word 定义为不包含空格的字符序列。

例如,

给定字符串 s = "Hello World",返回 5.

分析:

先从字符串开始扫面,若为空格先保存紧挨当前空格前的 word 长度(因为可能后面的字符全是空格),再将 word 长度计数器清 0,用于下一次计数;若不为空格,将 word 长度计数器加 1。如果最后一个非空字符为空格(以空格结尾),需要返回上次记录的 word 长度,否则(以 word 结尾)就是当前 word 的长度。

int lengthOfLastWord(char* s) {
    char *ps = s;
    int ilastWordSize = 0, iwordSize = 0;
    
    if(!s || !*s)/*空指针或者空串*/
        return 0;
    
    while(*ps)
    {
        if(*ps == ' ')
        {
            if(iwordSize) /*如果空格前出现过word,记录到当前为止最后出现的*/
            {
                ilastWordSize = iwordSize;
            }
            iwordSize = 0;
        }
        else
        {
            ++iwordSize;
        }
        if(*ps == ' ' && !*(ps+1)) /*以空格结束,返回最后出现的word*/
        {
            iwordSize = ilastWordSize;
            break;
        }
        ++ps;
    }
        
    return iwordSize;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值