問題 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();
}
}