首页 > 编程语言 >【华为OD】D卷真题100分:IPv4地址转换成整数 Java代码实现

【华为OD】D卷真题100分:IPv4地址转换成整数 Java代码实现

时间:2024-06-19 21:59:21浏览次数:26  
标签:Java 真题 OD 整数 地址 IPv4 100

【华为OD】2024年C、D卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript

【华为OD】2024年C、D卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript-CSDN博客

JS、python、java、C、C++代码实现:

【华为OD】D卷真题100分:IPv4地址转换成整数 JavaScript代码实现-CSDN博客

【华为OD】D卷真题100分:IPv4地址转换成整数 python代码实现-CSDN博客 

【华为OD】D卷真题100分:IPv4地址转换成整数 Java代码实现-CSDN博客 

【华为OD】D卷真题100分:IPv4地址转换成整数 C语言代码实现-CSDN博客 

【华为OD】D卷真题100分:IPv4地址转换成整数 C++代码实现-CSDN博客 

题目描述:

存在一种虚拟IPv4地址,由4小节组成,每节的范围为0~255,以#号间隔,虚拟IPv4地址可以转换为一个32位的整数,例如:
128#0#255#255,转换为32位整数的结果为2147549183(0x8000FFFF)
1#0#0#0,转换为32位整数的结果为16777216(0x01000000)
现以字符串形式给出一个虚拟IPv4地址,限制第1小节的范围为1~128,即每一节范围分别为(1~128)#(0~255)#(0~255)#(0~255),要求每个IPv4地址只能对应到唯一的整数上。如果是非法IPv4,返回invalid IP

输入描述

输入一行,虚拟IPv4地址格式字符串

输出描述

输出以上,按照要求输出整型或者特定字符

示例1

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

100#101#1#5

输出

1684340997

示例2

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

1#2#3

输出

invalid IP

备注

输入不能确保是合法的IPv4地址,需要对非法IPv4(空串,含有IP地址中不存在的字符,非合法的#分十进制,十进制整数不在合法区间内)进行识别,返回特定错误

题目解析:

先看规则:

        IP转换规则:

地址转整数

32位二进制转十进制,如:10.10.10.10,对应二进制为:00001010 00001010 00001010 00001010,转换十进制:168430090
原理:

第一段:向左移 24 位,

第二段:向左移 16 位,

第三段:向左移 8 位,

最后一段:保留原值

也可以用如下方式进行计算:

ip = 0;

ip <<= 8;
ip |= (unsigned char) (stoi(matchStr[i]) & 0xFF);

        IPv4 有效得分成4部分,然后对每一部分进行拆分,拿到每段数值之后,再进行计算,转成十进制的数值,即可,否则无效则输出  invalid IP

代码实现:

import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;


public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String mystr = sc.nextLine();
        String rst = "invalid IP";
        String matchstr = "^(\\d+)#(\\d+)#(\\d+)#(\\d+)$";
        Pattern pat = Pattern.compile(matchstr);
        Matcher mat = pat.matcher(mystr);

        while (mat.find()) {
            boolean bErr = false;
            for (int i = 1; i < mat.groupCount() + 1; ++i) {
                int data = Integer.parseInt(mat.group(i));
                if (i == 1) {
                    if (128 < data ) {
                        bErr = true;
                        break;
                    }
                }
                if (255 < data ) {
                    bErr = true;
                    break;
                }
            }
            if (!bErr) {
                int ipstr = 0;
                for (int i = 1; i < mat.groupCount() + 1; ++i) {
                    ipstr <<= 8;
                    ipstr |= Integer.parseInt(mat.group(i)) & 0xFF;
                }
                rst = ipstr + "";
            }
        }
        System.out.println(rst);
    }
}

标签:Java,真题,OD,整数,地址,IPv4,100
From: https://blog.csdn.net/mars1199/article/details/139754320

相关文章

  • 【华为OD】D卷真题100分:IPv4地址转换成整数 python代码实现
    【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript-CSDN博客JS、python、java、C、C++代码实现:【华为OD】D卷真题100分:IPv4地址转换成整数JavaScript代码实现-CSDN博......
  • 初识java基础
    一、初识javaJava是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程......
  • Java项目开发中异步调用场景控制并发数
    场景项目基于SpringBoot搭建,默认使用TomcatWeb容器,对于每个HTTP请求,TomcatWeb容器会分配1个线程来处理请求。在pom.xml里查看依赖关系:spring-boot-starter-web添加了tomcat-embed-core依赖Tomcat线程池配置可在application.yml配置:server:tomcat:max-threads:5......
  • SEETF-2023 express-javascript-security ejs相关漏洞
    今天做个ejs相关题目。进入页面只发现一个输入框,题目标签是ejs相关,去github看看源码,发现ejs版本为3.1.9,可以确定地是rce漏洞。接下来说说这个rce漏洞。3.1.9版本的rce漏洞主要是因为使用了这个模板来构建网页逻辑导致的。点击查看代码//index.jsconstexpress=require('e......
  • 推荐一款目前可用的百度网盘下载工具:ODE多功能助手
    ODE多功能助手是一款百度网盘下载工具,目前还在开发阶段,但已实现百度网盘解析下载功能。用户可以提前使用该功能进行百度网盘文件的下载。软件特点:1.多功能预期:虽然目前功能有限,但开发者计划将其打造为一款多功能下载工具。2.自动解析:能够自动识别百度网盘链接中的提取码,......
  • 袈裟哥java程序语言终极版
    第一章:Java环境搭建    Java是一种计算机编程语言;除了java编程语言,还有很多的编程语言:c、c++、c#、python等不同编程语言类比于不同国家语言;每个编程语言的语法不同;应用场景不同Java是一个用于后端开发的编程语言 一、Java历史    1.1995年,sun公司推出的一款......
  • 【JavaScript脚本宇宙】终极对决:JavaScript表单库比较指南
    简化你的表单开发:六种流行JavaScript库的深入比较前言在现代网页开发中,表单处理是一个常见的任务。为了简化这个过程并提供更好的用户体验,许多开发人员使用JavaScript库来管理表单数据、验证和提交。本文将介绍六种流行的JavaScript表单库,它们具有不同的功能和适用场景。......
  • Leetcode Hot100之双指针
    1.移动零题目描述给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。解题思路双指针遍历一遍即可解决:我们定义了两个指针i和j,它们都初始化为0。然后,我们开始遍历列表......
  • 对于java中向上转型后调用.getClass()方法还是子类的原因
    在java中有一个概念叫引用。官方给的定义是这样的:在Java中,"引用"(Reference)是指一个变量,它存储了对象的内存地址,而不是对象本身。换句话说,引用是指向对象的指针或者句柄。在Java中,所有的对象都通过引用来访问和操作,而不是直接访问对象本身。 通俗的将就是一个指路人,当有人询......
  • java基础·小白入门(二)
    目录Java数组、字符串、正则表达式数组基本知识二维数组字符串初始化基本用法正则表达式相关知识点Java语言的内存分配Java的增强for循环类和对象基本概念定义与创建应用Java数组、字符串、正则表达式数组基本知识Java中,数组元素可以为简单数据类型,也可以为......