Skip to content

Latest commit

 

History

History
68 lines (54 loc) · 1.73 KB

3179.md

File metadata and controls

68 lines (54 loc) · 1.73 KB

最长单词 3179: 最长单词

题目要求找出输入句子中最长的那个单词。

题目来源

3179: 最长单词

总时间限制: 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。