【TSOJ课程】07 1020 最长最短单词

该博客介绍了如何使用C++解决一道关于找出字符串中最长和最短单词的问题。题目要求处理长度小于500的字符串,找到并输出最长和最短的单词。博主提供了解析思路和解题代码,强调通过遍历字符串并利用额外变量跟踪最长和最短单词,避免反复计算长度以优化效率。
摘要由CSDN通过智能技术生成

课程29_07 1020 最长最短单词


题目:

题目描述:

给定由若干个单词组成的字符串,字符串的长度小于 500,单词和单词之间由空格分开,求出其中的最长最短单词

输入描述:

长度小于 500 的字符串

输出描述:

输出为 2 行,每行一个单词,第一行输出最长单词,第二行输出最短单词,若有多个相同长度的最长最短单词,则输出第一次出现的那个

样例输入:

I play the leading man who else

样例输出:

leading
I


解析:

简单的字符串处理。这道题可以和 求字符串个数 那道题一起思考一下,因为这道题也涉及到如何判断单词的分界线的问题。

思路很简单,从头到尾扫描字符串,用另外一个string变量存储单词,碰到空格了就计算这个变量的长度,然后和max和min对比,更新数据就可以了。

下面解题部分会详细讲解代码。


解题:

变量解释:

  • str,类型string,输入的字符串
  • maxs,类型string,记录最长的单词是什么
  • mins,类型string,同上,记录最短的单词是什么
  • temps,类型string,用来暂时存储单词,直到碰到空格单词结束,计算它的长度
  • maxsl,类型int,记录最长的单词长度是多少
  • minsl,类型int,记录最短的单词长度是多少
  • tempsl,类型int,记录temps的长度。这个变量纯粹是用来优化的,这样不需要反复计算temps的长度,所以并不是必要的。

我们看到代码。首先读取字符串,做一些初始化。接下来我们看循环的开始点并不是常规的i=0,而是(str[0]==' ')?1:0,为什么呢。我们看下面,我们判断一个单词是否结束的时候,用了str[i]==' ' && str[i-1]!=' ',但是要注意的是,如果第一个就是空格,那我们就会访问i-1,也就是-1,这个时候就越界了。所以当第一个字符是空格的时候&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值