Jabber ID(codeforce)

来源:互联网 发布:中国每年生活垃圾数据 编辑:程序博客网 时间:2024/05/21 15:06

题目连接:http://codeforces.com/contest/21/problem/A

题目大意:判断字符串是否符合要求

题目思路:直接处理字符串

A. Jabber ID
time limit per test
2 seconds
memory limit per test
64 megabytes
input
standard input
output
standard output

Jabber ID on the national Berland service «Babber» has a form <username>@<hostname>[/resource], where

  • <username> — is a sequence of Latin letters (lowercase or uppercase), digits or underscores characters «_», the length of<username> is between 1 and 16, inclusive.
  • <hostname> — is a sequence of word separated by periods (characters «.»), where each word should contain only characters allowed for<username>, the length of each word is between 1 and 16, inclusive. The length of<hostname> is between 1 and 32, inclusive.
  • <resource> — is a sequence of Latin letters (lowercase or uppercase), digits or underscores characters «_», the length of<resource> is between 1 and 16, inclusive.

There are the samples of correct Jabber IDs: mike@codeforces.com,007@en.codeforces.com/contest.

Your task is to write program which checks if given string is a correct Jabber ID.

Input

The input contains of a single line. The line has the length between 1 and 100 characters, inclusive. Each characters has ASCII-code between 33 and 127, inclusive.

Output

Print YES or NO.

Sample test(s)
Input
mike@codeforces.com
Output
YES
Input
john.smith@codeforces.ru/contest.icpc/12
Output
NO

#include<iostream>#include<stdio.h>#include<string.h>using namespace std;bool flag=true;void parse_user(string s){    if(s.size()<1||s.size()>16)    {        flag=false;        return ;    }    for(int i=0; i<s.size(); i++)    {        if(!isalpha(s[i])&&!isdigit(s[i])&&s[i]!='_')        {            flag=false;            return ;        }    }}void parse_host(string s){    if(s.size()<1||s.size()>32)    {        flag=false;        return ;    }    string cc;    for(int i=0; i<s.size(); i++)    {        if(s[i]=='.')        {            if(cc.size()<1||cc.size()>16)            {                flag=false;                return ;            }            for(int j=0; j<cc.size(); j++)            {                if(!isalpha(cc[j])&&!isdigit(cc[j])&&cc[j]!='_')                {                    flag=false;                    return ;                }            }            cc="";        }        else            cc+=s[i];    }    if(cc.size()<1||cc.size()>16)    {        flag=false;        return ;    }    for(int j=0; j<cc.size(); j++)    {        if(!isalpha(cc[j])&&!isdigit(cc[j])&&cc[j]!='_')        {            flag=false;            return ;        }    }}void parse_res(string s){    if(s.size()<1||s.size()>16)        flag=false;    for(int i=0; i<s.size(); i++)    {        if(!isalpha(s[i])&&!isdigit(s[i])&&s[i]!='_')        {            flag=false;            return ;        }    }}int main(){    string str;    string username,hostname,resource;    while(cin>>str)    {        flag=true;        int cur=0;        while(cur<str.size()&&str[cur]!='@')        {            username+=str[cur];            cur++;        }        if(cur>=str.size())        {            flag=false;        }        parse_user(username);        cur++;        while(cur<str.size()&&str[cur]!='/')        {            hostname+=str[cur];            cur++;        }        parse_host(hostname);        if(cur<str.size())        {            cur++;            while(cur<str.size())            {                resource+=str[cur];                cur++;            }            parse_res(resource);        }        if(flag)            printf("YES\n");        else printf("NO\n");    }    return 0;}


原创粉丝点击