东华OJ 基础题95 最长的单词——难度中

问题描述 :

明明刚开始学习英语的时候,对英语有浓厚的兴趣,但是随着时间的推移,英语单词量的增加,明明越来越觉得背单词是一件相当痛苦的事情。于是他想出各种各样的方法来增加背单词的乐趣。

这次他想出的方法是把所有要背的英语单词排成一行,找出其中最长的一个单词来先背,然后划去这个单词,在剩下的单词中再找出一个最长的单词来背,以此类推,直到把所有单词都背完。如果有多个长度相同的单词,则先背一行中靠前的那个单词。这样做的好处是:背到越后面,单词越短,越容易背,越能增加背单词的信心。

例如有这么一行单词: one two three four five 明明会首先挑出three来背,因为它是最长的一个单词,由5个字母组成;然后明明会选择four这个单词,虽然five这个单词的长度和four这个单词的长度一样,但是four在five的前面,所以明明会先背four这个单词,然后再背five,等明明把five这个单词背完以后,接着背one这个单词,最后背的是two这个单词。

但是在这样背单词之中,明明又发现了另一个问题,当要背非常多的单词时,寻找最长的单词会花很多时间,他想让你帮助他写一个程序,找出一行单词中最长的那个,节约明明背单词所花的时间,与此同时,明明希望你能告诉他这个英文单词有多少个字母组成,那他可以做到心里有数。

明明的问题可以归结为:在一行英文单词中,找出其中最长的单词(若有多个最长,找出第一个出现的),并输出这个单词的长度。

输入说明 :

你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据仅占一行,每行包括许多个英语单词和空格,单词和单词之间可能有多个空格,每行的长度不会超过1000个字符。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。

输出说明 :

对于每一组测试数据,你写的程序要求计算出一组相应的运算结果,并将每组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果为一个整数和一个英语单词,整数表示该英文单词的长度,整数和单词之间用一个空格隔开。输出时,每组运算结果单独占一行,其行首和行尾都没有任何空格或其他任何字符,每组运算结果与其后一组运算结果之间没有任何空行或其他任何字符,第一组运算结果前面以及最后一组运算结果后面也都没有任何空行或其他任何字符。 注:通常,显示屏为标准输出设备。

输入范例 :

a bc def ghijk lmn
abc def ghi

输出范例 :

5 ghijk
3 abc

完整C++代码

Java有字符串以某个字符进行分隔的函数,c++好像没有,所以查了一下,可以下面这个模板以空格进行分隔

#include <iostream>
#include <sstream>
using namespace std;

int main(int argc, char** argv) {
	istringstream str("  everything   is       ok");	
	string out;

	while (str >> out) {
		cout << out << endl;
	}
}
//输出
everything
is
ok

这里是本题的代码,将while循环里的内容进行改造

#include <bits/stdc++.h>

using namespace std;

int main()
{
	string s;
	while (getline(cin, s)) {
		istringstream str(s);
		string word, long_word;
		int len = 0;
		while (str >> word) {
			if (len < word.size()) {
				long_word = word;
				len = word.size();
			}
		}
		cout << len << " " << long_word << endl;
	}
	return 0;
}

😋欢迎大伙私信或者评论区交流讨论😋

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值