#1603 : 提取用户名
时间限制: 10000ms
单点时限: 1000ms
内存限制: 256MB
描述
在现在的各种互联网应用中,在一段文字中使用'@'字符来提起一名用户是流行的做法。
例如:
"@littleho submitted his code 30 times before he got passed the system test."
其中littleho就是一个用户名。我们规定在一段文字中,'@'字符之后一段连续的、非空的大小写英文字母组成的字符串被视为提起的用户名。
给定一段文字,请你输出其中所有提到的用户名。
输入
一行文本,只包含大小写字母、标点符号和空格。长度不超过800。
输出
按文本中的顺序输出所有提到的用户名,之间用一个空格隔开。重复提到的相同用户名也重复输出。
- 样例输入
-
@abc:@@,@littleho's code is so confusing. @abc.
样例输出 -
abc littleho abc 再加几组数据: Input: @....gfjhsf@ @nmn @,, @m @m @ASD@S@S@@@EEEE@.J Output: nmn m ASD S S EEEE 分析:直接模拟输出就好。
#include
char s[100000],sub[1000];int main(){ gets(s); int len=0,i=0,flag=0,t=0; while(s[i]) { if(s[i]=='@') { if(flag&&len>0) {sub[len]='\0';if(t++) printf(" ");printf("%s",sub);len=0;} else {len=0;flag=1;} i++;continue; } if(flag) { if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')) {sub[len++]=s[i];} else if(len>0) { sub[len]='\0'; if(t) printf(" "); printf("%s",sub); t++; len=0;flag=0; } else {len=0;flag=0;} } else {len=0;flag=0;} i++; } if(flag&&len>0) { sub[len]='\0'; if(t++) printf(" "); printf("%s",sub); } if(t) printf("\n"); return 0;}