判断是否是合法邮箱(串)
时间: 1ms 内存:128M
描述:
输入一个字符串,判断是否是合法邮箱(格式正确即可,不管是否真的存在)输入的只能是字母、数字、下划线、@以及.五种, @前后只能是字母或者数字,而且.后只能是com, 是则输出YES ,否则输出NO
输入:
输出:
判断结果
示例输入:
adf12@qw213.com
示例输出:
YES
提示:
参考答案(内存最优[752]):
#include<stdio.h>
#include<string.h>
int main()
{
char a[100];
int i,j,k=0,m,t1=0,t2=0;
gets(a);
m=strlen(a);
for(i=0;i<m;i++)
if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z'||a[i]>='0'&&a[i]<='9'||a[i]=='@'||a[i]=='_'||a[i]=='.')
k++;
if(k==m)
{
for(i=0;i<m;i++)
{
if(a[i]=='@')
{
t1++;
j=i;
}
if(a[i]=='.')
{
t2++;
k=i;
}
}
if(t1>0&&t1<=1&&t2>0&&t2<=1)
{
if((a[j-1]>='0'&&a[j-1]<='9'||a[j-1]>='A'&&a[j-1]<='Z'||a[j-1]>='a'&&a[j-1]<='z')&&(a[j+1]>='0'&&a[j+1]<='9'||a[j+1]>='A'&&a[j+1]<='Z'||a[j+1]>='a'&&a[j+1]<='z'))
{
if(k+3<m&&a[k+1]=='c'&&a[k+2]=='o'&&a[k+3]=='m')
printf("YES\n");
else
printf("NO\n");
}
else
{
printf("NO\n");
return 0;
}
}
else
{
printf("NO\n");
return 0;
}
}
else
{
printf("NO\n");
return 0;
}
return 0;
}
参考答案(时间最优[0]):
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
int main()
{
char a[1000];
int n,i,p;
cin>>a;
n=strlen(a);
p=1;
for(i=0; i<n; i++)
{
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
continue;
else if(a[i]=='_')
continue;
else if(a[i]=='@')
continue;
else if(a[i]=='.')
continue;
else if(a[i]>='0'&&a[i]<='9')
continue;
else
{
p=0;
break;
}
}
if(p==1)
{
for(i=0; i<n; i++)
if(a[i]=='@')
{
if(((a[i-1]>='a'&&a[i-1]<='z')||(a[i-1]>='A'&&a[i-1]<='Z')||(a[i-1]>='0'&&a[i-1]<='9'))&&((a[i+1]>='a'&&a[i+1]<='z')||(a[i+1]>='A'&&a[i+1]<='Z')||(a[i+1]>='0'&&a[i+1]<='9')))
{
p=1;
break;
}
else
{
p=0;
break;
}
}
}
if(p==1)
{
for(i=0; i<n; i++)
if(a[i]=='.')
{
if(a[i+1]=='c'&&a[i+2]=='o'&&a[i+3]=='m')
{
p=1;
break;
}
else p=0;
}
}
if(p==1)
cout<<"YES"<<endl;
else cout<<"NO"<<endl;
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。