LeetCode题解——最后一个单词的长度

LeetCode题解——最后一个单词的长度

  • 题目介绍

  • 解题思路

这题中心思想就是找到字符串最后一个从不为空字符开始到为空字符开始的子字符串,c++里面有多种思路可以解决,下面举2种常见的,易于思考到的

第一种,用c++的find函数,从字符串的末尾开始find,首先找到第一个不为空字符的index,然后从这个index开始找到第一个为空字符的位置,这个位置距离就是字符串长度

第二种,用迭代器从字符串后面开始遍历,记录从第一个不为空到为空的距离,其实find内部也是用的遍历

  • 代码示例

方法一:

class Solution {
public:
    int lengthOfLastWord(string s) {
        int index1 = s.find_last_not_of(' ',string::npos);
        if(index1 < 0) {
            return 0;
        }
        int index2 = s.find_last_of(' ',index1);
        return index1-index2;
    }
};

方法二:

class Solution {
public:
    int lengthOfLastWord(string s) {
        string::reverse_iterator it; 
        int count = 0;
        for(it = s.rbegin();it != s.rend();it++) {
            while(*it != ' ' && it != s.rend()) {
                count++;
                it++;
            }
            if(count != 0) {
                break;
            }
        }
        return count;
    }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值