题解:洛谷 B2156 最长单词 2
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。
欢迎大家订阅我的专栏:算法题解:C++与Python实现!
附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总
【题目来源】
洛谷:B2156 最长单词 2 - 洛谷
【题目描述】
一个以.结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式,求句子中的最长单词。
【输入】
一个以.结尾的简单英文句子(长度不超过500 500500),单词之间用空格分隔,没有缩写形式和其它特殊形式。
【输出】
该句子中最长的单词。如果多于一个,则输出第一个。
【输入样例】
I am a student of Peking University.【输出样例】
University【算法标签】
#入门# #语法基础#
【代码详解】
#include<bits/stdc++.h>usingnamespacestd;intmain(){chars[505];// 完整输入字符串charword[505];// 当前正在处理的单词charmxWord[505];// 最长的单词// 读取输入字符串,包含空格cin.get(s,505);intct=0;// 当前单词的字母计数intctMax=0;// 最长单词的长度intwi=0;// 当前单词的索引(用于构建word字符串)intlen;// 输入字符串的长度len=strlen(s);// 获取输入字符串的长度// 遍历输入字符串的每个字符for(inti=0;i<len;++i){if(s[i]==' '||s[i]=='.')// 如果遇到空格或句点(单词分隔符){word[wi]='\0';// 在单词末尾添加结束符,构成完整的C字符串wi=0;// 重置单词索引,为下一个单词做准备if(ct>ctMax)// 如果当前单词长度比已知的最长单词更长{ctMax=ct;// 更新最长单词长度strcpy(mxWord,word);// 将当前单词复制到mxWord中保存}ct=0;// 重置单词长度计数器}else// 如果当前字符是单词的一部分{ct++;// 单词长度计数器加1word[wi++]=s[i];// 将当前字符添加到word字符串中}}cout<<mxWord;// 输出最长的单词return0;// 程序正常结束}【运行结果】
I am a student of Peking University. University