华为OD机试题【IPv4地址转换成整数】【2023 B卷 100分】

news2024/12/28 18:13:30

在这里插入图片描述

文章目录

  • 🎯 前言
  • 🎯 题目描述
  • 🎯 解题思路
    • 示例 1
    • 示例 2
    • 📙 Python代码实现
    • 📗 Java代码实现
    • 📘 C语言代码实现


🎯 前言

🏆 《华为机试真题》专栏含2023年牛客网面经、华为面经试题、华为OD机试真题最新试题。

🏆 华为机试有三道题,第一道和第二道属于简单题,分值为100分,第三道为困难题,分值为200分,总分400分,150分钟考试时间。

🏆 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议!

🎯 题目描述

存在一种虚拟IPv4地址,由4小节组成,第一节节的范围为1-128,之后范围是0-255,以#号间隔,格式如下:(1-128)#(0-255)#(0-255)#(0-255)

请利用这个特性把虚拟IPv4地址转换为一个32位的整数,IPv4地址以字符串形式给出,要求每个IPvV4地址只能对应到唯一的整数上。

如果是非法IPv4,返回invalid IP。

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

输出描述:
输出一行,按照要求输出整型或者特定字符

🎯 解题思路

对于一个给定的虚拟IPv4地址,可以通过以下步骤将其转换为32位整数:

  1. 首先,将IP地址按照#号进行拆分,得到四个小节的字符串。
  2. 对于每一节的字符串,先将其转换为整数。如果转换失败,说明该地址非法。
  3. 对于第一节字符串,需要检查其取值范围是否在1-128之间。如果不在,说明该地址非法。
  4. 对于剩下的三节字符串,需要检查其取值范围是否在0-255之间。如果不在,说明该地址非法。
  5. 如果全部验证通过,则将四个整数依次左移24、16、8、0位,并进行位或操作。得到的结果就是32位整数表示的IPv4地址。

示例 1

输入:
100#101#1#5

输出:
1684340997

示例 2

输入:
1#2#3

输出:
invalid IP

📙 Python代码实现

ip_str = input().strip()
ip_list = ip_str.split("#")
if len(ip_list) != 4:
    print("invalid IP")
else:
    try:
        a, b, c, d = map(int, ip_list)
        if not(1 <= a <= 128 and 0 <= b <= 255 and 0 <= c <= 255 and 0 <= d <= 255):
            print("invalid IP")
        else:
            ip_int = (a << 24) | (b << 16) | (c << 8) | d
            print(ip_int)
    except ValueError:
        print("invalid IP")

📗 Java代码实现

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String ipStr = scanner.nextLine().trim();
        String[] ipList = ipStr.split("#");
        if (ipList.length != 4) {
            System.out.println("invalid IP");
        } else {
            try {
                int a = Integer.parseInt(ipList[0]);
                int b = Integer.parseInt(ipList[1]);
                int c = Integer.parseInt(ipList[2]);
                int d = Integer.parseInt(ipList[3]);
                if (!(1 <= a && a <= 128 && 0 <= b && b <= 255 && 0 <= c && c <= 255 && 0 <= d && d <= 255)) {
                    System.out.println("invalid IP");
                } else {
                    int ipInt = (a << 24) | (b << 16) | (c << 8) | d;
                    System.out.println(ipInt);
                }
            } catch (NumberFormatException e) {
                System.out.println("invalid IP");
            }
        }
    }
}

📘 C语言代码实现

#include
#include

int main() {
    char ipStr[20];
    fgets(ipStr, 20, stdin);
    char * ipList[4];
    char * ptr = strtok(ipStr, "#");
    int i = 0;
    while (ptr != NULL) {
        ipList[i++] = ptr;
        ptr = strtok(NULL, "#");
    }
    if (i != 4) {
        printf("invalid IP\n");
        return 0;
    }
    int a, b, c, d;
    if (sscanf(ipList[0], "%d", & a) != 1 || sscanf(ipList[1], "%d", & b) != 1 || sscanf(ipList[2], "%d", & c) != 1 || sscanf(ipList[3], "%d", & d) != 1) {
        printf("invalid IP\n");
    } else if (!(1 <= a && a <= 128 && 0 <= b && b <= 255 && 0 <= c && c <= 255 && 0 <= d && d <= 255)) {
        printf("invalid IP\n");
    } else {
        int ipInt = (a << 24) | (b << 16) | (c << 8) | d;
        printf("%d\n", ipInt);
    }
    return 0;
}

在这里插入图片描述

📭 本专栏包含了最新最全的2023年 华为OD机试真题,有详细的分析和解答。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/613896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spark安装和编程实践(Spark2.4.0)

系列文章目录 Ubuntu常见基本问题 Hadoop3.1.3安装&#xff08;单机、伪分布&#xff09; Hadoop集群搭建 HBase2.2.2安装&#xff08;单机、伪分布&#xff09; Zookeeper集群搭建 HBase集群搭建 Spark安装和编程实践&#xff08;Spark2.4.0&#xff09; Spark集群搭建 文章目…

linux(信号产生的各种方式)

目录&#xff1a; 1.引入 2.介绍系统支持的信号列表 3.键盘方式产生信号 4.程序中存在异常问题&#xff0c;产生信号 5.系统调用产生信号 6.软件条件也能产生信号 7.任何理解OS给进程发送信号 1.引入 我怎么证明ctrlc是向指定进程发送了2号信号呢&#xff1f;&#xff1f; sig…

5万字大数据实验室建设方案能源大数据中心建设方案word

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除篇幅有限&#xff0c;无法完全展示&#xff0c;喜欢资料可转发评论&#xff0c;私信了解更多信息。 大数据实验室建设方案 大数据实验室建设方案 目录 1概述 1.1建设背景 1.…

chatgpt赋能python:Python抓取数据:从入门到精通

Python抓取数据&#xff1a;从入门到精通 Python是当下最热门的编程语言之一&#xff0c;其强大的数据处理能力使得Python在数据抓取方面也越来越受欢迎。本文将从入门到精通介绍Python抓取数据的方法&#xff0c;希望对初学者有所帮助。 网络爬虫 网络爬虫是Python基于网络…

CG平台实验——线性回归

文章目录 练习1&#xff1a;线性回归介绍1 实现简单示例函数1.1 提交解决方案 2 单变量线性回归2.1 绘制数据2.2 梯度下降2.2.1 更新公式2.2.2 实现2.2.3 计算成本J(θ)2.2.4 梯度下降 2.3 可视化成本函数 选做练习3 多变量线性回归3.1 特征标准化3.2 梯度下降 练习1&#xff1…

chatgpt赋能python:Python在边框中写文字:优雅展示内容的方式

Python在边框中写文字&#xff1a;优雅展示内容的方式 当我们需要在网页上展示一些信息时&#xff0c;通常会使用边框来突出显示内容&#xff0c;然而&#xff0c;普通的边框可能会显得过于单调&#xff0c;缺少设计感&#xff0c;这时我们可以借助Python来实现一个功能强大的…

chatgpt赋能python:Python备份列表:从小白到大神,这里有你需要的一切

Python备份列表&#xff1a;从小白到大神&#xff0c;这里有你需要的一切 随着信息科技的发展&#xff0c;数字资料的价值越发具有现实意义&#xff0c;但是数据泄露、系统崩溃、病毒攻击、硬件故障等情况也时有发生。因此&#xff0c;对数据进行备份是非常必要的。Python作为…

Select选择器(antd-design组件库)简单使用以及增加搜索功能

1.Select选择器 下拉选择器。 2.何时使用 弹出一个下拉菜单给用户选择操作&#xff0c;用于代替原生的选择器&#xff0c;或者需要一个更优雅的多选器时。 当选项少时&#xff08;少于 5 项&#xff09;&#xff0c;建议直接将选项平铺&#xff0c;使用 Radio 是更好的选择。 组…

chatgpt赋能python:Python如何倒序输出列表

Python如何倒序输出列表 Python是一种高级编程语言&#xff0c;自由、开源、跨平台&#xff0c;被广泛用于Web开发、数据分析、机器学习等领域。在Python中&#xff0c;列表是一种常见的数据结构&#xff0c;它允许存储多个元素&#xff0c;并支持索引、切片等操作。本文将介绍…

chatgpt赋能python:Python如何保存文件-最全面的指南

Python如何保存文件 - 最全面的指南 Python是一种强大的编程语言&#xff0c;它在处理文本文件、CSV文件、Excel文件、图像文件和PDF文件等方面表现出色。然而&#xff0c;如何在Python中保存这些文件&#xff0c;对于初学者来说可能会有些棘手。在本篇文章中&#xff0c;我们…

自建极简Ethercat主站-底层驱动编写

1、简介 MECM&#xff08;Mini Ethercat Master&#xff09;,名字随便起的。已经学习了一段时间的Ethercat总线了&#xff0c;目前的想法就是自己简单实现一个Ethercat主站&#xff0c;没有太多的冗余功能&#xff0c;暂时不考虑太多的容错机制&#xff0c;仅实现目前用到的FO…

chatgpt赋能python:Python奇偶求和:简单实用的算法

Python奇偶求和&#xff1a;简单实用的算法 Python作为一门高级编程语言&#xff0c;不仅适用于数据分析及科学计算领域&#xff0c;也可用于日常生活中的实用问题。例如&#xff0c;人们常常需要对一个整数序列中的奇数和偶数进行求和&#xff0c;以便了解各自的总数或者对它…

【软件测试】测试经验:IT 软件测试技术系统化学习方法

目录 一、IT 软件测试技术的介绍 &#xff08;1&#xff09;相关职称证书 ① 「中级」软件评测师 ②「高级」项目管理师 &#xff08;2&#xff09;背景 &#xff08;3&#xff09;作用 &#xff08;4&#xff09;行业应用 &#xff08;5&#xff09;技术概况 二、…

ES数据库介绍

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 目录 前言 一、ES(ElasticSearch)是什么&#xff1f; 二、ES的使用场景 三、ES的特点 四、ES和传统数据库对比 总结 前言 今天项目通过python用到了ES数据库…

ubuntu22.04安装docker

1、卸载旧版本&#xff08;如果有的话&#xff09; sudo apt-get remove docker docker-engine docker.io containerd runc 2、 添加 Docker 的官方 GPG 密钥 curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add - 3、设置稳定版仓库 …

python+vue健身房会员管理系统97s0t

健身管理系统根据需求分析&#xff0c;分为多个角色模块&#xff0c;分别为普通管理员和超级管理员模块&#xff0c;其中健身俱乐部普通管理员和健身俱乐部超级管理员都可以使用&#xff0c;不同角色登录显示不同的权限功能。本健身房管理系统管理员&#xff0c;会员&#xff0…

二叉树part7 | ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

文章目录 530.二叉搜索树的最小绝对差思路代码困难 501.二叉搜索树中的众数思路官方题解代码困难 236. 二叉树的最近公共祖先思路代码困难 今日收获 530.二叉搜索树的最小绝对差 530.二叉搜索树的最小绝对差 思路 题目中要求在二叉搜索树上任意两节点的差的绝对值的最小值。…

51小车测速及OLED显示速度

1.小车测速 用途&#xff1a;广泛用于电机转速检测&#xff0c;脉冲计数,位置限位等。有遮挡&#xff0c;输出高电平&#xff1b;无遮挡&#xff0c;输出低电平接线 VCC 接电源正极3.3-5V GND 接电源负极 DO TTL开关信号输出 AO 此模块不起作用 测试原理和单位换算 轮子走一…

Springboot常见注解总结

给实体类使用该注解&#xff0c;结合后续的EXCEL工具类进行使用&#xff0c;能加快开发过程中关于文件导入的需求 文章目录 目录 前言 1. Excel注解 2. Annotation注解 3. Retention注解 4. Target注解 4. Document注解 5.Inherited注解 5.RestController注解 6.swagger注解(AP…

《10.21作业修正》

【一】 cookie概念解析&#xff1a;cookie是一种保存在客户端的小型文本文件&#xff0c;用于保存服务器通过set-cookie字段返回的数据&#xff0c;在下次请求服务器道德时候通过cookie字段将内容返回发送给服务器&#xff0c;是http进行客户端维护的一中方式&#xff0c;并且c…