sicily SPAM


只要把条件确定了就不难了

不要看到那么多英文就害怕

判断条件:

1. ‘.’不能作为第一个和最后一个字符

2. 除了‘@’与‘.’外,其他字符必须合法,即只能包括: a~z;A~Z;0~9;下划线、连字符

3. 然后就很简单了

给两个position变量,确定邮箱的起点与终点再进行输出就完成了。

#include <iostream>
#include <string>

using namespace std;

bool ilegal(char a){
	if (a>='a' && a<='z'){
		return true;
	}
	if (a>='A' && a<='Z'){
		return true;
	}
	if (a>='0' && a<='9'){
		return true;
	}
	if (a=='-' || a=='_'){
		return true;
	}
	return false;
}

int main(){
	string garbge;
	while(cin>>garbge){
		string target="";

		for (int i = 1; i < garbge.length()-1; ++i){
			if (garbge[i] != '@'){
				continue;
			}
			if (garbge[i+1]=='.' || garbge[i-1]=='.'){
				continue;
			}

			//the former part
			int prePosition = i-1;
			while(prePosition>=0){
				if (ilegal(garbge[prePosition])){
					prePosition--;
				} else if (garbge[prePosition]=='.' && ilegal(garbge[prePosition-1])){
						prePosition--;
				} else{
					break;
				}
			}
			prePosition++;

			//for later part
			int backposition = i+1;
			while(backposition<=garbge.length()-1){
				if (ilegal(garbge[backposition])){
					backposition++;
				} else if (garbge[backposition]=='.' && ilegal(garbge[backposition+1])){
						backposition++;
				} else{
					break;
				}
			}
			backposition--;

			int flag=false;
			for (int j = prePosition; j<backposition; ++j){
				cout<<garbge[j];
				flag = true;
			}
			if(flag){
				cout<<garbge[backposition]<<endl;
			}

		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值