问题 G: 判断是否是合法邮箱(串)
时间限制: 1 Sec 内存限制: 128 MB
提交: 1556 解决: 956
[提交] [状态] [命题人:外部导入]
题目描述
输入一个字符串,判断是否是合法邮箱(格式正确即可,不管是否真的存在)输入的只能是字母、数字、下划线、@以及.五种, @前后只能是字母或者数字,而且.后只能是com, 是则输出YES ,否则输出NO
输入
输出
判断结果
样例输入 Copy
[email protected]
样例输出 Copy
YES
解法1:正则匹配,注意一点,[]内表示匹配某个字符,如果是字符串的话,就不要再用''或者双引号,会出错。
^表示开始,$表示结束。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner scan = new Scanner(System.in);
//int n = scan.nextInt();
String temp = scan.nextLine();
//String later = scan.next();
//int n = scan.nextInt();
if(temp.matches("^(([0-9])|([a-zA-Z]))+[@]{1}(([a-zA-Z])|([0-9]))+[.]{1}com{1}$")) {
System.out.println("YES");
}else {
System.out.println("NO");
}
}
}
解法2:
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
String str = scan.next();
int flag1=0;
int flag2=0;
int ct1=0,ct2=0;
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='@'||('a'<=str.charAt(i)&&str.charAt(i)<='z')||('A'<=str.charAt(i)&&str.charAt(i)<='Z')||('0'<=str.charAt(i)&&str.charAt(i)<='9')||str.charAt(i)=='.'||str.charAt(i)=='_'){
flag1=1;//说明符号没有问题
}
if(str.charAt(i)=='.'){
ct1=i;
}
if(str.charAt(i)=='@'){
ct2=i;
}
}
if(ct1!=0&&ct2!=0&&flag1==1){
if(ct2+1==ct1){
System.out.println("NO");
}else if(str.substring(ct1+1).equals("com")){
System.out.println("YES");
}else {
System.out.println("NO");
}
}else {
System.out.println("NO");
}
System.out.println();
}
}