58.最后一个单词的长度-力扣(LeetCode)

一、题目解析

我们能发现这个字符串中只有空格和英文字母,并且要返回最后一个单词的长度,下面我们要介绍几个strng提供的接口。

二、思路讲解

 

 虽然看着多,但是我们该题要用到接口只有两个,rfind和find_last_of。其中rfind是从后往前找指定的内容并返回下标,find_last_of则是在string中找需要匹配的内容的任意一个。

结合给定的示例我们可以开始分析了。由示例1 我们能发现它的末尾就是英文字母,所以我们可以用pos来接收rfind(' ')的下标,这时最后单词的长度为size-(pos+1)

这个示例还有另一种 形式,即全部都为英文字母没有空格,这时长度为s的size。

还有示例2,这里与示例1不同的地方是最后是空格而不是英文字符,这时我们的pos就失去作用了,我们需要新的变量,pos1,pos2,其中pos1用于接收find_last_of在pos位置的基础上,去找二十六个字母大写或小写其中的一个并返回下标,pos2则是在pos1的基础上接收rfind找kong个的下标,这时我们就锁定了最后一个单词的区间位置,它的长度为pos1-pos2

这里可以思路尝试写代码了,链接:58. 最后一个单词的长度 - 力扣(LeetCode) 

三、代码示例

 

这里用num来接收计算出来的单词长度,而最后的三目操作符意思是当num为0时返回pos1-pos2,否则就返回num本身。这里判0的目的是,当s结尾是空格时,pos+1的值正好是size的大小,所以在if语句里num==0,这里的string::npos意思为最大string的长度,所以我们需要在结尾位置判断是否为0

如果对您有帮助还请留下一个免费的赞和评论,这对我很有帮助,期待我们下期再见! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值