题解:
#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。
参考:
7-26 单词长度-CSDN博客