一、题目解析
我们能发现这个字符串中只有空格和英文字母,并且要返回最后一个单词的长度,下面我们要介绍几个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
如果对您有帮助还请留下一个免费的赞和评论,这对我很有帮助,期待我们下期再见!