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] == ' '){ 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(" "); return 0; }