4:邮箱验证
查看 提交 统计 提问
总时间限制: 1000ms 内存限制: 65536kB
描述
POJ 注册的时候需要用户输入邮箱,验证邮箱的规则包括:
1)有且仅有一个’@‘符号
2)’@‘和’.‘不能出现在字符串的首和尾
3)’@‘之后至少要有一个’.’,并且’@‘不能和’.'直接相连
满足以上3条的字符串为合法邮箱,否则不合法,
编写程序验证输入是否合法
输入
输入包含若干行,每一行为一个代验证的邮箱地址,长度小于100
输出
每一行输入对应一行输出
如果验证合法,输出 YES
如果验证非法:输出 NO
样例输入
.a@b.com
pku@edu.cn
cs101@gmail.com
cs101@gmail
样例输出
NO
YES
YES
NO
虽然这道题看起来不难但是还是出现了问题。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a;
while(cin>>a)
{
int atnum=0;
int dotnum=0;
int flag=0;
int flag_1=0;
int i;
if(a[0]=='@'||a[0]=='.'||a[a.length()-1]=='@'||a[a.length()-1]=='.')
{
flag_1=1;}
for(i=0;i<a.length();i++)
{
if(a[i]=='@')
{
atnum++;
flag=1;
if(a[i+1]=='.')
{
flag_1=1;
}
break;
}
if(a[i]=='.')
{
flag=1;
if(a[i+1]=='@')
{
flag_1=1;
}
break;
}
}
for(i++;i<a.length()&&flag;i++)
{
if(a[i]=='.')
dotnum++;
if(a[i]=='@')
atnum++;
}
if(atnum!=1||!dotnum)
{
flag_1=1;
}
if(flag_1)
cout<<"NO"<<endl;
else {
cout<<"YES"<<endl;}
}
return 0;
}