题目要求找出输入句子中最长的那个单词。
总时间限制: 1000ms 内存限制: 65536kB
输入一个英文句子,长度不超过200个字符。其中可包含的符号只有逗号","和句号"."。
输出句子中最长的一个单词。如果有多个这样的单词,输出最后出现的。
多组数据,每行为一个句子,其中符号"."不代表句子结束,譬如人名中可含有".”。
每行一个最长单词。这里单词的定义是仅由连续的字母组成的字符串。
Good morning.
Have a nice day.
morning
nice
从左到右依次遍历字符串,判断是否为英文字母,并累加长度,最后比较长度并记录下标输出最长的单词。
#include <iostream>
using namespace std;
int main() {
char cstr[201];
while (cin.getline(cstr, 201)) {
int i, idx = 0, pos = -1, maxlen = 0;
while (cstr[idx] != '\0') {
int len = 0;
while ((cstr[idx] >= 'a' && cstr[idx] <= 'z')
|| (cstr[idx] >= 'A' && cstr[idx] <= 'Z')) {
len++;
idx++;
}
if (len >= maxlen) {
maxlen = len;
pos = idx - len;
}
idx++;
}
for (i = pos; i < pos + maxlen; ++i) {
cout << cstr[i];
}
cout << endl;
}
return 0;
}
3179.cpp 代码长度:495B 内存:136kB 时间:3ms 通过率:86% 最小内存:136kB 最短时间:0ms
需要两个变量来分别记录字符串的下标和长度,遍历字符串知道遇到'\0'为止。
有任何的改进意见欢迎大家在微信平台公众号主页面留言或者发表issue。