信息学奥赛一本通 1149:最长单词2 | OpenJudge NOI 1.13 16
【题目链接】
ybt 1149:最长单词2
OpenJudge NOI 1.13 16:最长单词2
【题目考点】
1. 字符串遍历
2. 处理多个字符串
3. while(cin >> …)读入字符串
适合于读入多个由空格分开的字符串
string s;
while(cin >> s)
{//...
}
调试时,输入Ctrl+z,按回车,即可结束输入,观察输出。
【题解代码】
解法1:遍历字符串
用一个字符数组保存当前查看的单词、最长单词,用变量保存最长单词长度。
#include<bits/stdc++.h>
using namespace std;
int main()
{char s[505], word[505], mxWord[505];//s:完整字符串 word:当前查看的单词 mxWord:最长单词 cin.get(s, 505);int ct = 0, ctMax = 0, wi = 0, len;//ct:单词中字母计数 ctMax:最大单词长度 word_sp:最长单词开始的位置 len = strlen(s);for(int i = 0; i < len; ++i){if(s[i] == ' ' || s[i] == '.'){word[wi] = '\0';//单词末尾加'\0',构成字符串 wi = 0;//wi还原,等待下次向word字符数组赋值 if(ct > ctMax)//如果该单词长度比已知最长的单词长度更长 {ctMax = ct;//ctMax记录最长单词长度 strcpy(mxWord, word);//mxWord保存最长的单词 }ct = 0;}else{ct++;//单词长度计数 word[wi++] = s[i];//将当前查看的字符s[i]填入word字符串中 }}cout<<mxWord;return 0;
}
解法2:将该句子分解为多个单词,然后找各单词中的最长单词。
分解出的多个单词可以保存在二维字符数组或string类数组中。该解法用string类数组。
#include<bits/stdc++.h>
using namespace std;
int main()
{string s, word[505];getline(cin, s);//输入带空格的字符串int ws, wi = 0, mxi = 0;//ws:单词首字母下标 , wi:word数组下标, mxi:最长单词下标 for(int i = 0; i < s.length(); ++i)//遍历字符串{if(s[i] == ' ' || s[i] == '.')//当i位置是空格{word[wi++] = s.substr(ws, i - ws);//从ws位置开始,截取i-ws长度,即为一个单词ws = i + 1;//截取后,下个单词首字母位置为i + 1}} for(int i = 0; i < wi; ++i)//求最长单词{if(word[i].length() > word[mxi].length())mxi = i;}cout<<word[mxi];return 0;
}
解法3:使用while(cin >>…)
适合于读入多个用空格分开的字符串
#include<bits/stdc++.h>
using namespace std;
int main()
{string s, s_mx;while(cin >> s){if(s[s.length()-1] == '.')//如果末尾是句号'.' s.pop_back();//删去末尾字符if(s.length() > s_mx.length())s_mx = s;}cout << s_mx;return 0;
}
信息学奥赛一本通 1149:最长单词2 | OpenJudge NOI 1.13 16相关推荐
- 信息学奥赛一本通 1141:删除单词后缀 | OpenJudge NOI 1.7 20
[题目链接] ybt 1141:删除单词后缀 OpenJudge NOI 1.7 20:删除单词后缀 [题目考点] 1. 字符串处理 2. string类成员函数 取子串:substr(起始位置, 子 ...
- 信息学奥赛一本通 1413:确定进制 | OpenJudge NOI 1.13 34:确定进制 | OpenJudge NOI 2.1 1973:确定进制
[题目链接] ybt 1413:确定进制 OpenJudge NOI 1.13 34:确定进制 OpenJudge NOI 2.1 1973:确定进制 注意:两OJ平台上题目条件不同,ybt中:2≤b ...
- 信息学奥赛一本通 1033:计算线段长度 | OpenJudge NOI 1.3 16
[题目链接] ybt 1033:计算线段长度 OpenJudge NOI 1.3 16:计算线段长度 [题目考点] 1. < cmath >数学库函数调用 开方函数:double sqrt ...
- 信息学奥赛一本通 1229:电池的寿命 | OpenJudge NOI 4.6 2469:电池的寿命
[题目链接] ybt 1229:电池的寿命 OpenJudge NOI 4.6 2469:电池的寿命 [题目考点] 1. 贪心 [解题思路] 1. 贪心选择性质的证明 电池分配主要有两步, 第一步:将 ...
- 信息学奥赛一本通 1227:Ride to Office | OpenJudge NOI 4.6 2404:Ride to Office
[题目链接] ybt 1227:Ride to Office OpenJudge NOI 4.6 2404:Ride to Office 原题是英文题,虽说两题题意相同,但一本通网站没有对该问题进行直 ...
- 信息学奥赛一本通 1132:石头剪子布 | OpenJudge NOI 1.7 04
[题目链接] ybt 1132:石头剪子布 OpenJudge NOI 1.7 04:石头剪子布 [题目考点] 1. 字符串处理 2. 判断字符串相同 s1,s2是字符数组,判断二者是否相同:strc ...
- 信息学奥赛一本通 1404:我家的门牌号 | OpenJudge NOI 2.1 7649:我家的门牌号 | 小学奥数 7649
[题目链接] ybt 1404:我家的门牌号 OpenJudge NOI 2.1 7649:我家的门牌号 OpenJudge NOI 小学奥数 7649:我家的门牌号 注意:一本通OJ和OpenJud ...
- 信息学奥赛一本通 1181:整数奇偶排序 | OpenJudge NOI 1.10 06:整数奇偶排序
[题目链接] ybt 1181:整数奇偶排序 OpenJudge NOI 1.10 06:整数奇偶排序 [题目考点] 1. 排序 [君义精讲]排序算法 [解题思路] 解法1:将奇数和偶数分开,分别排序 ...
- 信息学奥赛一本通 1223:An Easy Problem | OpenJudge NOI 4.6 1455:An Easy Problem
[题目链接] ybt 1223:An Easy Problem OpenJudge NOI 4.6 1455:An Easy Problem [题目考点] 1. 数制 2. 枚举 [解题思路] 解法1 ...
最新文章
- JZOJ #4722 跳楼机 (最短路模型的完美转化)
- 环形熔断器设计与gobreaker源码分析
- myeclipse + tomcat 项目自动部署
- html 文件上传框 input标签
- iPhone 13 Pro原型机曝光:全新玫瑰金配色,女性首选
- NumPy 统计方法
- 蹲下突然站起来总是会头晕,是什么原因?
- keras可视化模型
- 温故知新----css基础
- 手机连接蓝牙扫码枪_扫码枪蓝牙连接电脑 蓝牙扫码枪
- 易语言禁用计算机指令大全,易语言电脑屏幕锁定工具源码
- 2022-2028全球汽车后置摄像头模组行业调研及趋势分析报告
- 命令行查看基金实时涨跌(附完整代码)
- hello heaven
- 自定义拍照时 拍照界面_拍照时图片比例怎么选?比构图还要提前一步的摄影攻略要做好...
- 项管行知04--项目章程
- unity tilemap
- ♠♦♣TypeScript
- 搜索引擎优化(SEO)之 前端性能优化技巧
- 跨域解决方式——JSONP,CORS