题解:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
getline(cin,s); //读取一行字符串
char c; //记录字符
int cnt = 0; //用来记录长度
int flag = 0; //用来判断是否已经输出了第一个单词的长度
for (int i = 0;i<s.size(); i++)
{
c = s[i];
if (c != ' '&&c!='.') //当前不是空格时和最后的.时
{
cnt++; //长度增加
}
if ((c == ' ' || c == '.') && cnt) //当遇到空格和末尾.时,如果存在单词(cnt!=0)
{
if (flag == 0) //如果还没输出第一个单词
{
cout << cnt; //直接输出cnt,不要加空格
flag = 1; //flag=1为已经输出第一个单词
}
else { //如果已经输出第一个单词长度时,按照下面格式输出:
cout << " " << cnt;
}
cnt = 0; //只要是空格或.时,不记录长度
}
if (c == '.') break; //当遇到末尾的.时跳出循环
}
return 0;
}
为什么要判断是否已经输出了第一个单词?
比如你输入这种情况,那么输出就一个数字5,没有末尾的空格。
当你输入这样:
hello 是第一个单词,输出5了。然后world是第二个单词,要先输出空格再输出5。