题目内容
存在一种虚拟IPv4地址,由4小节组成,每节的范围为0~128,以#号间隔,格式如下:
(1~128)#(0~255)#(0~255)#(0~255)
请利用这个特性把虚拟IPv4地址转换为一个32位的整数,IPv4地址以字符串形式给出,要求每个IPvV4地址只能对应到唯一的整数上。
如果是非法IPv4,返回 invalid IP。
输入描述
输入一行,虚拟IPv4地址格式字符串
输出描述
输出一行,按照要求输出整型或者特定字符
示例1
输入
100#101#1#5
输出
1684340997
示例2
输入
1#2#3
输出
invalid IP
解题思路
1:使用 “#” 对字符串进行切割
2:判断IP地址是否合法
3:最后将IP转换为32位整数。做法是将每一部分转换为整数,然后将其左移一定的位数(由8*(3-i)确定,其中i是该部分在数组中的索引),然后将所有部分的结果加起来。
其中非法情况有如下几种:
(1)IPv4地址字符串的长度必须在7~15之间;<
华为机试真题解析:IPv4地址转整数
本文介绍了2023年华为在线开发者(OD)机试中的一道真题,涉及将虚拟IPv4地址转换为32位整数。题目要求在合法的IPv4地址范围内(0~128)将地址转换,非法IP返回'invalid IP'。解题思路包括字符串切割、IP地址合法性检查及整数转换。提供了示例输入和输出,以及解题代码参考。
订阅专栏 解锁全文
607

被折叠的 条评论
为什么被折叠?



