hihocoder-1603-提取用户名
#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
直接模拟法,直接输出。
#include <cstdio>
#include <iostream>
using namespace std;
const int MAXN = 1024;
int main(){
char ch[MAXN];
int i = 0;
while(scanf("%c", &ch[i]) != EOF){
if(ch[i] == '\n'){
break;
}
++i;
}
int j = 0;
bool flag = true;
while(j < i){
if(ch[j] == '@'){
if( flag ){
flag = false;
}else{
printf(" ");
}
int k = j + 1;
while( k < i && (( ch[k] >= 'A' && ch[k] <= 'Z' ) || (ch[k] >='a' && ch[k] <= 'z')) ){
printf("%c", ch[k] );
++k;
}
if(j + 1 == k){
flag = true;
}
j = k;
}else{
++j;
}
}
printf("\n");
return 0;
}