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

news2025/2/1 5:06:58

在这里插入图片描述

一、题目描述

存在一种虚拟 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 地址, 需要对非法 IPv4(空串,含有 IP 地址中不存在的字符, 非合法的#分十进制,十进制整数不在合法区间内)进行识别,返回特定错误

二、输入描述

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

三、输出描述

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

四、解题思路

  1. 读取输入的虚拟 IPv4 地址字符串,使用split方法将其按照"#"进行拆分,得到一个字符串数组arr,数组长度为4;
  2. 初始化变量count为0,用于记录转换后的32位整数;
  3. 初始化布尔变量flag为true,用于判断地址的合法性;
  4. 判断arr的长度是否为4,如果不为4,则将flag置为false;。
  5. 遍历arr数组,对每个字符串进行以下操作;
    • 将字符串转换为整数n。
    • 判断当前位置是否为第1小节(索引为0),如果是,则判断n是否在合法范围1~128之间,如果不是,则将flag置为false。
    • 判断n是否在合法范围0~255之间,如果不是,则将flag置为false。
    • 将n左移相应的位数(8*(3-i))并累加到count中。
  6. 根据flag的值判断地址的合法性,如果为true,则输出count;如果为false,则输出"invalid IP"。

该算法通过将虚拟 IPv4 地址转换为32位整数的方式进行处理,并同时判断地址的合法性。根据题目要求的范围限制和条件判断,遍历地址的每一节,将每一节的值转换为32位整数的对应位,并累加到count中。最后根据flag的值判断地址的合法性,并输出相应的结果。算法的时间复杂度为O(1),因为地址的长度固定为4。

五、JavaScript算法源码

function calculate(input) {
    if (!input) {
        console.log('invalid IP'); // 空串属于非法 IPv4 地址
    } else {
        const arr = input.split('#'); // 将地址按照"#"进行拆分,得到一个字符串数组arr,数组长度为4
        if (arr.length !== 4) { // 地址格式不正确,属于非法 IPv4 地址
            console.log('invalid IP');
        } else {
            let count = 0; // 初始化变量count为0,用于记录转换后的32位整数
            let flag = true; // 初始化布尔变量flag为true,用于判断地址的合法性
            for (let i = 0; i < 4; i++) { // 遍历arr数组,对每个字符串进行处理
                const n = parseInt(arr[i]); // 将当前字符串转换为整数n
                if (isNaN(n) || n < 0 || n > 255) { // 非法十进制整数,属于非法 IPv4 地址
                    flag = false;
                    break;
                }
                if (i === 0 && (n < 1 || n > 128)) { // 第1小节范围不符合要求,属于非法 IPv4 地址
                    flag = false;
                    break;
                }
                count |= n << (8 * (3 - i)); // 将n左移相应的位数并累加到count中
            }
            if (flag) { // 地址合法,输出32位整数count
                return count;
            } else { // 地址非法,输出"invalid IP"
                console.log('invalid IP');
            }
        }
    }
}

六、效果展示

1、输入

10#20#30#40

2、输出

169090600

在这里插入图片描述


🏆下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

【深入理解函数栈帧:探索函数调用的内部机制】

本章我们要介绍的不是数学中的函数&#xff0c;而是C语言中的函数哟&#xff01; 本章重点 了解汇编指令深刻理解函数调用过程 样例代码&#xff1a; #include <stdio.h> int MyAdd(int a, int b) {int c 0;c a b;return c; }int main() {int x 0xA;int y 0xB;int…

SpringCloud第二篇:Feign远程调用

思考&#xff1a;为啥要学Feign呢&#xff1f; 先来看我们以前利用RestTemplate发起远程调用的代码&#xff1a; String url "http://userservice/user/" order.getUserId(); User user restTemplate.getFor0bject(url,User.class);这里就有几个问题&#xff1a…

首届“设计·无尽谈”论坛完满收官 持续打造当代设计共同体

首届“设计无尽谈”论坛在京举行 5月16日&#xff0c;首届“设计无尽谈”论坛在北京举行&#xff0c;本次论坛以“漫谈当代空间精神”为主题&#xff0c;12位来自顶尖建筑设计领域的嘉宾和设计师到场&#xff0c;论坛以茶话会的形式进行&#xff0c;不受严格的议程和时间限制的…

计算机网络之网络层

四.网络层&#xff1a;数据平面 4.1 网络层概述 网络层被分解为两个相互作用的部分&#xff0c;即数据平面和控制平面。 数据平面决定到达路由器输入链路之一的数据报如何转发到该路由器的输出链路之一&#xff0c;转发方式有&#xff1a; 传统的IP转发&#xff1a;转发基于…

Nginx(一)介绍Nginx、正向代理和实现反向代理的两个实例

文章目录 一、Nginx介绍二、正向代理三、反向代理四、实例演示1、反向代理实例一&#xff08;反向代理&#xff0c;访问www.123.com&#xff09;2、反向代理实例二&#xff08;使用 nginx 反向代理&#xff0c;根据访问的路径跳转到不同端口的服务中&#xff09; 五、nginx之lo…

文件操作之文件下载(32)

下载和读取是差不多的情况 区分 文件被解析&#xff0c;我们称为文件包含漏洞 显示文件的源代码&#xff0c;我们称为文件读取漏洞 提示文件下载&#xff0c;我们称为文件下载漏洞 #文件下载 文件下载出现的原因&#xff0c;在任意代码里面出现下载性的功能性函数所导致的…

调用腾讯API实现人像分割

目录 1. 作者介绍2&#xff0e;腾讯云API人像分割2.1 人像分割接口描述2.2 请求参数介绍 3&#xff0e;代码实现3.1 获取SecretId和SecretKey3.2 人像分割代码调试3.3 完整代码3.4 实验结果 1. 作者介绍 岳泽昂&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c…

MySQL主从同步——主库已有的数据如何到从库

一、复制主库数据到从库 此步骤主要针对运行一段时间的主库&#xff0c;需要将历史数据导入到从库&#xff0c;保证主从强一致性。 主库锁表停止写操作 在主库MySQL命令行中执行 flush tables with read lock; 主库数据导出 将主库所在主机命令行下使用mysqldump命令导出…

交通状态分析 | Python实现基于张量分解的交通流量时空模式挖掘

文章目录 效果一览文章概述研究内容源码设计参考资料效果一览 文章概述 交通状态分析 | Python实现基于张量分解的交通流量时空模式挖掘 研究内容 一般出行行程通常都由某种明确目的驱使,例如上班、购物或娱乐,出行的起始区域因其承担功能的不同,通常能够反映出用户的出行目…

【一、Linux文件与目录结构】

1 Linux 文件 Linux系统中一切皆文件 2 Linux目录结构 /bin Binary的缩写&#xff0c;存放着命令。 /sbin s即Super User&#xff0c;存放着root用户使用的系统管理程序。 /home 存放着普通用户的主目录&#xff0c;在Linux中每个用户都有一个自己的目录&#xff0c;一般…

近期学习论文总结 3(23.06.05-23.06.09)

公众号&#xff1a;EDPJ 目录 0. 摘要 1. Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization 1.1 主要思想 1.2 AdaIN 1.3 结构以及不同层使用 AdaIN 的效果 2. Watch your Up-Convolution: CNN Based Generative Deep Neural Networks are…

day46_项目

debug bug - 虫 第一台计算机,房子那么大,机械零件,齿轮,坏了,虫子(bug)卡着机器,debug(调试),虫子拿走了,机器就运行了,从此调试机器程序–>debug 目前: 这个卡机器的虫子,在博物馆 工具(IDEAEclipse)支持debug --> 追踪代码 如何使用debug 运行时候就得使用debug模式…

00后从事软件测试一年的心路历程

初识软件测试 不知不觉&#xff0c;我做软件测试已经快一年了&#xff0c;入职第一天的场景仿佛还在昨天。入职前&#xff0c;我对测试的认识仅仅停留在一些软件测试和测试方法的理论知识上&#xff0c;最多也是对自己的代码进行一些单元测试。 我之前所理解的测试是与开发分…

Django-可重用注册登录系统--项目搭建

文章目录 一、项目开始前的思考二、搭建项目环境三、设计数据库模型数据库模型文件设置数据库后端注册app生成迁移脚本并写入数据库测试是否成功数据库模型后台管理 路由与视图函数框架搭建路由配置视图函数的配置模板template的配置测试是否成功 前端界面设计与优化完善登录的…

【C/C++】函数参数默认值

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

【python+requests】接口自动化测试

这两天一直在找直接用python做接口自动化的方法&#xff0c;在网上也搜了一些博客参考&#xff0c;今天自己动手试了一下。 一、整体结构 上图是项目的目录结构&#xff0c;下面主要介绍下每个目录的作用。 Common:公共方法:主要放置公共的操作的类&#xff0c;比如数据库sql…

VPN(Virtual privacte network)浅谈

文章目录 VPN概念VPN类型站点-站点VPN客户端-站点VPN VPN的工作原理VPN职责职责一&#xff1a;保密完整性认证PSK算法实现&#xff08;献给大佬&#xff09;PSK应用演示RSA算法实现&#xff08;献给大佬&#xff09;RSA应用演示&#xff1a;实现签名 VPN两大框架VPN的误解VPN合…

Java调用Pytorch实现以图搜图(附源码)

Java调用Pytorch实现以图搜图 设计技术栈&#xff1a; 1、ElasticSearch环境&#xff1b; 2、Python运行环境&#xff08;如果事先没有pytorch模型时&#xff0c;可以用python脚本创建模型&#xff09;&#xff1b; 1、运行效果 2、创建模型&#xff08;有则可以跳过&#xf…

经典目标检测YOLO系列(1)YOLO-V1算法及其在VOC2007数据集上的应用

经典目标检测YOLO系列(1)YOLO-V1算法及其在VOC2007数据集上的应用 1 YOLO-V1的简述 1.1 目标检测概述 ​ 目标检测有非常广泛的应用&#xff0c; 例如&#xff1a;在安防监控、手机支付中的人脸检测&#xff1b;在智慧交通&#xff0c;自动驾驶中的车辆检测&#xff1b;在智…

TCP与UDP的可靠性传输

目录 一、TCP可靠性传输1、重传机制1.1、超时重传1.2、快速重传1.3、SACK1.4、Duplicate SACK 2、滑动窗口3、流量控制3.1 滑动窗口与流量控制3.2窗口关闭 4、拥塞控制4.1拥塞窗口4.2 慢启动4.3 拥塞避免4.4 拥塞发生4.5 快速恢复 二、UDP可靠性传输1、主要策略2、重传机制2.1 …