输入一行单词序列,相邻单词之间由 11 个或多个空格间隔,请对应地计算各个单词的长度。
注意,如果有标点符号(如连字符,逗号,句号),标点符号算作与之相连的词的一部分。没有被空格间隔开的符号串,都算作单词。
输入格式
一行单词序列,最少 11 个单词,最多 300300 个单词,单词之间用至少 11 个空格间隔。单词序列总长度不超过 10001000。
输出格式
依次输出对应单词的长度,之间以逗号间隔。
输出时每行末尾的多余空格,不影响答案正确性
样例输入
She was born in 1990-01-02 and from Beijing city.
样例输出
3,3,4,2,10,3,4,7,5
思路:为解决逗号问题,额外开辟空间ans[maxa]打表解决;
注意:deal()处理函数的调用,需要缩进空格,单词之间只留一个空格;
void deal(){//缩进空格
int cnt=0,flag=1;
for(int i=0;i<strlen(a);i++){
if(a[i]!=' '){
aa[cnt++]=a[i];
flag=1;
}
else if(a[i]==' '&&flag){
aa[cnt++]=' ';
flag=0;
}
}
}
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxa=1000+10;
char a[maxa],aa[maxa];
int ans[maxa];
void deal(){//缩进空格
int cnt=0,flag=1;
for(int i=0;i<strlen(a);i++){
if(a[i]!=' '){
aa[cnt++]=a[i];
flag=1;
}
else if(a[i]==' '&&flag){
aa[cnt++]=' ';
flag=0;
}
}
}
void solve(){
memset(ans,0,sizeof(ans));
int cnt=0;
for(int i=0;i<strlen(aa);i++){
if(aa[i]!=' ')
ans[cnt]++;
else if(aa[i]==' '||aa[i]=='\0'){
cnt++;
}
}
for(int i=0;i<cnt;i++)
cout<<ans[i]<<",";
cout<<ans[cnt]<<endl;
}
int main(){
gets(a);
deal();
solve();
return 0;
}