提取用户名

本文介绍了一个简单的程序设计问题,即如何从给定的一段文本中提取所有被 '@' 符号标记的用户名,并按原文顺序输出这些用户名。该程序通过遍历文本并检查 '@' 符号后的字母序列来实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在现在的各种互联网应用中,在一段文字中使用'@'字符来提起一名用户是流行的做法。  

例如:

"@littleho submitted his code 30 times before he got passed the system test."  

其中littleho就是一个用户名。我们规定在一段文字中,'@'字符之后一段连续的、非空的大小写英文字母组成的字符串被视为提起的用户名。  

给定一段文字,请你输出其中所有提到的用户名。

Input

一行文本,只包含大小写字母、标点符号和空格。长度不超过800。

Output

按文本中的顺序输出所有提到的用户名,之间用一个空格隔开。重复提到的相同用户名也重复输出。

Sample Input
@abc:@@,@littleho's code is so confusing. @abc.
Sample Output
abc littleho abc

题目本身没有太大难度,记录是因为输出的方式需要特别注意,不能有多余的空格出现

#include <bits/stdc++.h>
using namespace std;
const int inf = 810;
char th[inf];
int main()
{
    gets(th);
    int len = strlen(th);
    int N = 0;
    int fou = false;
    for(int i = 0; i < len;){
        if(th[i] == '@'){
            while(i < len){
                i ++;
                if(th[i] >= 'a' && th[i] <= 'z' || (th[i] >= 'A' && th[i] <= 'Z')){
                   if(fou && N == 1) cout << ' ';
                   cout << th[i];
                   N += 2;
                   fou = true;
                }else {
                    N = 1;
                    break;
                }
            }
        }else i ++;
    }
    cout <<endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值