#G3002. 句子体检

    ID: 811 传统题 1000ms 512MiB 尝试: 18 已通过: 6 难度: 普及− 上传者: 标签>字符串GESP三级字符串函数2026模拟

句子体检

题目描述

英语老师请你写一个"句子体检"程序。

给你一行文本,其中只包含英文字母、数字和空格。把连续的、不含空格的一段字符称为一个单词。注意:行首、行尾以及单词与单词之间,都可能出现多个连续的空格。

请你输出三样东西:

  1. 这行文本里一共有多少个单词;
  2. 其中最长的单词是什么,它有多少个字符。如果有多个单词长度并列最长,输出最先出现的那一个;
  3. 把每个单词的首字母改成大写(其余字符保持不变),然后用单个空格把它们重新连起来输出。

输入格式

一行文本,长度不超过 10001000 个字符,保证至少包含一个单词。

输出格式

第一行一个整数,表示单词个数。

第二行一个字符串和一个整数,表示最长的单词和它的长度,用空格分隔。

第三行一个字符串,表示首字母大写并用单个空格重新连接后的整句。

样例 #1

样例输入 #1

  hello  GESP world 2026 

样例输出 #1

4
hello 5
Hello GESP World 2026

样例解释

本样例的行首、行尾以及 hello 与 GESP 之间都有多余的空格,它们都不算作单词。

hello 和 world 都是 55 个字符,并列最长,按规则输出最先出现的 hello。

GESP 的首字母本来就是大写,改了以后没有变化;2026 以数字开头,把数字"变大写"不会有任何变化。

提示

数据范围

  • 对于 100%100\% 的数据:文本长度 ≤1000\le 1000,只含英文字母、数字和空格,且至少有一个单词。

提示

  • 整行文本(含空格)要用 getline(cin, s) 读入,不能用 cin >> s——后者遇到空格就停了。
  • toupper 作用在数字字符上不会有任何效果,所以不必特判,直接调用即可。
  • 拼接第三行时,可以先判断结果串是否为空:不为空就先补一个空格再接单词,这样行尾就不会多出空格。