牛客 HJ18 识别有效的IP地址和掩码并进行分类统计

在这里插入图片描述

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int[] cunt = new int[7];
        while(sc.hasNextLine()){
            String s = sc.nextLine();
            String[] s2 = s.split("~");
            if(s2[0].equals("end")){
                break;
            }
            String[] s0 = s2[0].split("\\.");
            String[] s1 = s2[1].split("\\.");
            if(Integer.parseInt(s0[0]) == 0|| Integer.parseInt(s0[0]) == 127){
                continue;
            }
            int jud = 1, isone = 1;
            for(int i = 0;i < 4; i++){
                if(s1.length < 4 || s1[i].length() == 0 || jud == 0) {
                    jud = 0;
                    break;
                }
                int t = Integer.parseInt(s1[i]);
                for(int j = 7; j >= 0; j--){
                    int m = 1 << j;
                    m &= t;
                    if(m == 0){
                        isone = 0;
                    }
                    else if(isone == 0){
                        jud = 0;
                        break;
                    }
                }
            }
            if(jud == 0 || isone == 1){
                cunt[5]++;
                continue;
            }
            jud = 1;
            for(int i = 0;i < 4; i++){
                if(s0.length < 4 || s0[i].length() == 0 || jud == 0) {
                    jud = 0;
                    break;
                }
                int t = Integer.parseInt(s0[i]);
                if(t < 0 || t > 255){
                    jud = 0;
                    break;
                }
            }
            int t = Integer.parseInt(s0[0]);
            if(jud == 0){
                cunt[5]++;
                continue;
            }
            if(t >= 1 && t <= 126){
                cunt[0]++;
            }
            if(t >= 128 && t <= 191){
                cunt[1]++;
            }
            if(t >= 192 && t <= 223){
                cunt[2]++;
            }
            if(t >= 224 && t <= 239){
                cunt[3]++;
            }
            if(t >= 240 && t <= 255){
                cunt[4]++;
            }
            if(t == 10){
                cunt[6]++;
            }
            if(t == 172 && Integer.parseInt(s0[1]) >= 16 &&Integer.parseInt(s0[1])<=31){
                cunt[6]++;
            }
            if(t == 192 && Integer.parseInt(s0[1]) == 168){
                cunt[6]++;
            }
        }
        for(int i:cunt)
            System.out.print(i + " ");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据引用和引用中的代码,输入一个只包含小写英文字母和数字的字符串,通过使用Python编程语中的匿名函数和字典来现字符统计,然后按照不同字符的数量由多到少输出统计结果,并且如果统计的个数相同,则按照ASCII码由小到大排序输出。 具体的实现步骤如下: 1. 使用一个无限循环来持续接收输入的字符串。 2. 在每次循环中,使用input()函数获取输入的字符串。 3. 创建一个空字典dict_a来存储字符统计的结果。 4. 遍历输入的字符串,对于每个字符,如果它不在字典dict_a的键中,就将它添加到字典dict_a中,并将它的值设为1;如果它已经在字典dict_a的键中,就将它对应的值加1。 5. 使用lambda函数作为key参数,对字典dict_a进行排序,首先按照字符的数量从大到小排序(即根据字典的值进行排序),如果数量相同,则按照ASCII码从小到大排序(即根据字典的键进行排序)。 6. 将排序后的结果按照指定的顺序连接成一个字符串,并输出结果。 根据引用中的代码,我们可以得到另一种实现方法: 1. 使用一个无限循环来持续接收输入的字符串。 2. 在每次循环中,使用input()函数获取输入的字符串。 3. 使用sorted()函数和set()函数对输入的字符串去重并排序,得到一个按照ASCII码从小到大排序的字符列表temp。 4. 使用lambda函数作为key参数,对temp列表进行排序,按照字符在输入字符串中出现的次数进行从大到小排序。 5. 将排序后的结果按照指定的顺序连接成一个字符串,并输出结果。 综上所述,根据用户提供的"hj102",我们可以使用Python来统计其字符并按照要求进行排序输出。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [OJ刷题(牛客) |HJ102 字符统计](https://blog.csdn.net/bl_yang/article/details/120008631)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [《华为机试》刷题之HJ102 字符统计](https://blog.csdn.net/qq_34331113/article/details/122606224)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

eyvr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值