首页 > 试题广场 >

手机号

[编程题]手机号
  • 热度指数:2315 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
    很多网站都要求用户输入手机号码,现在请写一个程序,判断用户输入的手机号码是否合法。本题中定义的合法手机号和现实中的手机号有出入,解题时以题面定义为准。
    一个合法的手机号码满足以下条件:
    (1)手机号码由 11 位数字构成。
    (2)手机号码的前三位为网络识别号,对应不同的手机运行商,在本题中只有以下几种(其余情况在本题中一律认为手机号不合法)
        中国电信:133,153,180,181,189
        中国联通:130,131,155,185,186
        中国移动:135,136,150,182,188
    (3)剩下 8 位数字任意
    现在输入手机号码,请判断是否合法

输入描述:
第一行一个数 T ,接下里 T 行每行一个手机号,输入的手机号只由数字构成。


输出描述:
输出 T 行,对每个手机号,如果满足题面定义,
电信号码输出 China Telecom
联通号码输出 China Unicom
移动号码输出 China Mobile Communications
如果不符合题面定义则输出 -1
示例1

输入

5
13312345678
18687654324
18277748494
15898494958
45364

输出

China Telecom
China Unicom
China Mobile Communications
-1
-1
import java.util.Scanner;

public class Main{
    public static void main(String [] args){
        Scanner scaner=new Scanner(System.in);   
        
       int count= scaner.nextInt();
        
        for(int i=0;i<count;i++){
            String str=scaner.nextLine();
          
            try{
            Long.parseLong(str);
            }catch(Exception e){
                System.out.println("-1");
                continue;
            }
            if(str.length()!=11){
                System.out.println("-1");
                continue;
            }
            String prefix=str.substring(0,3);
            
            switch(prefix){
                case "133":
                case "153":
                case "180":
                case "189":
                    System.out.println("China Telecom");
                    break;
                    
                case "130": 
                case "131": 
                case "155": 
                case "185": 
                case "186": 
                   System.out.println("China Unicom");
                    break;
                case "135": 
                case "136": 
                case "150": 
                case "182":
                case "188":
                    System.out.println("China Mobile Communications");
                    break;
                default:
                    System.out.println("-1");
                    
            }
            
        }
        
    }
    
}

发表于 2021-04-27 11:23:42 回复(0)
import java.util.HashMap;
import java.util.Scanner;

public class Main {

    public static String isLegalPhoneNumber(String str, HashMap<String, String > map) {
        if (str.length() != 11) {
            return "-1";
        }
        String  s = str.substring(0, 3);
        if (map.containsKey(s)) {
            return map.get(s);
        } else {
            return "-1";
        }
    }


    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        HashMap<String, String> map = new HashMap<>();

        map.put("133", "China Telecom");
        map.put("153", "China Telecom");
        map.put("180", "China Telecom");
        map.put("181", "China Telecom");
        map.put("189", "China Telecom");

        map.put("130", "China Unicom");
        map.put("131", "China Unicom");
        map.put("155", "China Unicom");
        map.put("185", "China Unicom");
        map.put("186", "China Unicom");

        map.put("135", "China Mobile Communications");
        map.put("136", "China Mobile Communications");
        map.put("150", "China Mobile Communications");
        map.put("182", "China Mobile Communications");
        map.put("188", "China Mobile Communications");

        int n = sc.nextInt();
        while(n-- > 0) {
            String str = sc.next();
            System.out.println(isLegalPhoneNumber(str, map));
        }

    }
}
发表于 2019-06-16 12:35:09 回复(0)