判断是否是合法邮箱(串)

判断是否是合法邮箱(串)

时间: 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;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注