首页 > 编程语言 >判断ip地址是否合法(美团2024届秋招笔试第三场编程真题)

判断ip地址是否合法(美团2024届秋招笔试第三场编程真题)

时间:2024-04-02 10:55:06浏览次数:32  
标签:届秋招 false 真题 int nums System return 第三场 255

核心思想

大模拟 -。-,还是不够细心,面向样例编程,一路错过去的。
写得太丑了 凑合看吧。

代码

import java.util.*;

public class Main {
    public static void main(String[] args) {
        final long MOD = (long) (1e9 + 7);
        Scanner scanner = new Scanner(System.in);

        String s = scanner.nextLine();
        String[] split = s.split("\\.");
        boolean flag = true;
        //开头结尾必须是数字
        if(s.charAt(0) < '0' || s.charAt(0) > '9' ||
                s.charAt(s.length() - 1) < '0' || s.charAt(s.length() - 1) > '9')
            flag = false;
        //拆分后的数组长度为4
        if (split.length != 4)
            flag = false;
        if(!flag){
            System.out.println("invalid");
            return;
        }
        int[] nums = new int[4];
        int idx = 0;
        for (String sp : split) {
            int cur = 0;
            char[] chs = sp.toCharArray();
            // 前导0 注意1.0.0.0 这样是允许的 要结合size判断 || 1.0..0 这样的数组长度也是4
            if((sp.startsWith("0") && sp.length() !=1) || chs.length == 0){
                flag = false;
                break;
            }
            // 必须是数字
            for (char ch : chs) {
                if(ch < '0' || ch > '9'){
                    flag = false;
                    break;
                }
                else
                    cur = cur * 10 + ch - '0';
            }
            nums[idx++] = cur;
        }
        if(!flag){
            System.out.println("invalid");
            return;
        }
        if(!check(nums, 0, 255, 0, 255, 0, 255, 0, 255)){
            System.out.println("invalid");
        }
        else if(check(nums, 1, 126, 0, 0, 0, 0, 0, 0)){
            System.out.println("A_address");
        }
        else if(check(nums, 128, 191, 0, 255, 0, 255, 0, 255)){
            System.out.println("B_address");
        }
        else if(check(nums, 192, 223, 0, 255, 0, 255, 0, 255)){
            System.out.println("C_address");
        }
        else
            System.out.println("other");
    }

    static boolean check(int[] nums,int s0, int e0, int s1, int e1, int s2, int e2, int s3, int e3){
        // A类地址 第一位不是126时范围变化一下 我传入的start 和 end 都是0
        if(nums[0] != 126){
            e1 = e2 = e3 = 255;
        }
        if(nums[0] < s0 || nums[0] > e0)
            return  false;
        if(nums[1] < s1 || nums[1] > e1)
            return  false;
        if(nums[2] < s2 || nums[2] > e2)
            return  false;
        if(nums[3] < s3 || nums[3] > e3)
            return  false;
        return true;
    }
}

标签:届秋招,false,真题,int,nums,System,return,第三场,255
From: https://www.cnblogs.com/ganyq/p/18110129

相关文章

  • 小美的游戏(美团2024届秋招笔试第三场编程真题)
    核心思想贪心,每次选最大的两个~代码importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){finallongMOD=(long)(1e9+7);Scannerscanner=newScanner(System.in);intn=scanner.nextInt();......
  • 小美种果树(美团2024届秋招笔试第三场编程真题)
    核心思想第一天施肥浇水第二天浇水第三天浇水定义以上操作为一轮先计算能够操作多少轮,那么剩下的只能在一轮中完成,剩下的成长值模拟下就好。代码importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){finallongMOD=(long)......
  • 小红结账(美团2024届秋招笔试第三场编程真题)
    核心思想模拟就完了代码importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);intn=scanner.nextInt();intm=scanner.nextInt();Long[]res=newL......
  • 蓝桥杯真题代码记录(松散子序列
    目录1.题目:2.我的代码:小结:1.题目:给定一个仅含小写字母的字符串s,假设s的一个子序列t的第i个字符对应了原字符串中的第pi个字符。我们定义s的一个松散子序列为:对于i>1总是有pi−pi−1≥2。设一个子序列的价值为其包含的每个字符的价值之和......
  • 【华为OD机试真题】A卷-优秀学员统计(JAVA)
    一、题目描述【华为OD机试真题】A卷-优秀学员统计(JAVA)题目描述:公司某部门软件教导团正在组织新员工每日打卡学习活动,他们开展这项学习活动已经一个月了,所以想统计下这个月优秀的打卡员工。每个员工会对应一个id,每天的打卡记录记录当天打卡员工的id集合,一共30天。请你实现......
  • 【华为OD机试真题】A卷-预定酒店(JAVA)
    一、题目描述【华为OD机试真题】A卷-预定酒店(JAVA)题目描述:放暑假了,小明决定到某旅游景点游玩,他在网上搜索到了各种价位的酒店(长度为n的数组A),他的心理价位是x元,请帮他筛选出k个最接近x元的酒店(n>=k>0),并由低到高打印酒店的价格二、输入输出输入描述:第一行:n,k,x......
  • 小球投盒(美团2024届秋招笔试第三场编程真题)
    核心思想用一个队列存储还没有球的盒子一旦有2操作那就剩下1个盒子没有球代码importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){TreeSet<Integer>q=newTreeSet<>();Scannerscanner=newScanner(System.in)......
  • CCF CSP模拟真题解答示例
    CCFCSP(CertifiedSoftwareProfessional)是中国计算机学会主办的软件能力认证考试,旨在评估参赛者在计算机科学和软件工程方面的基本知识和实践能力。请注意,以下解答仅作为示例,并非针对实际真题的准确答案。实际考试中的题目和答案可能会有所不同,因此建议参考官方发布的真题......
  • 平均数为k的最长连续子数组(美团2024届秋招笔试第三场编程真题)
    核心思想每个数-k计算前缀和并放入mapkey=前缀和value=当前下标由于需要最长的子数组所以只记录最先存在的下标出现重复的前缀和说明存在平均值为k的区间[pre+1,i]importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Sc......
  • 蓝桥杯2015年第十三届省赛真题-三羊献瑞
    一、题目观察下面的加法算式:   祥瑞生辉 + 三羊献瑞---------------------- 三羊生瑞气(如果有对齐问题,可以参看【图1】)其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内......