计蒜客--T1121--统计单词--打表

输入一行单词序列,相邻单词之间由 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;
}

 

上一篇:PAT (Basic Level) Practice (中文)1016 部分A+B


下一篇:Meten Special Activities II - Day 5