E卷-IPv4地址转换成整数-100分

E卷-刷题笔记合集🔗

题目描述

存在一种虚拟IPv4地址,由4小节组成,每节以#号间隔。每个IPv4地址可以转换为一个32位整数。

例如:

  • 128#0#255#255 转换为 2147549183 (0x8000FFFF)
  • 1#0#0#0 转换为 16777216 (0x01000000)

现给出一个虚拟IPv4地址字符串,要求:

  1. 第1小节范围为1~128
  2. 其他小节范围为0~255
  3. 每个IPv4地址只能对应到唯一的整数

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

输入格式

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

输出格式

输出一行,表示转换后的整数或"invalid IP"。

约束说明

输入不能确保是合法的IPv4地址,需要识别以下非法情况:

  1. 空串
  2. 含有非法字符
  3. 非法的#分隔
  4. 十进制整数不在合法区间内
  5. 含有前导零的数字(如01)

样例输入1

100#101#1#5

样例输出1

1684340997

样例输入2

1#2#3

样例输出2

invalid IP

题解

本题的关键点在于:

  1. IP地址格式验证

    • 必须是4段
    • 每段必须是合法数字
    • 数字范围检查
    • 不允许前导零
  2. 进制转换

    • 十进制转十六进制
    • 补齐前导零
    • 拼接后转回十进制
  3. 异常处理

    • 非法字符
    • 段数不足
    • 数字越界
    • 前导零

实现思路:

  1. 格式检查:

    • 按#分割
    • 验证段数
    • 检查每段格式
  2. 数值转换:

    • 转换为十六进制
    • 补齐两位
    • 拼接后转十进制
  3. 边界处理:

    • 使用long避免溢出
    • 处理前导零
    • 范围检查

时间复杂度: O(1)

参考代码

def solve():
    # 读取输入
    ip = input().strip()
    
    # IP地址格式检查
    def check_ip(ip):

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

算法刷题笔记 文章被收录于专栏

本专栏收集并整理了一些刷题笔记

全部评论

相关推荐

02-22 20:28
重庆大学 Java
程序员牛肉:首先不要焦虑,你肯定是有希望的。 首先我觉得你得好好想一想自己想要什么。找不到开发岗就一定是失败的吗?那开发岗的35岁危机怎么说?因此无论是找工作还是考公我觉得你都需要慎重的想一想。但你一定要避开这样一个误区:“我是因为找不到工作所以不得不选择考公”。 千万不要这么想。你这个学历挺好的了,因此你投后端岗肯定是有面试机会的。有多少人简历写的再牛逼,直接连机筛简历都过不去有啥用?因此你先保持自信一点。 以你现在的水平的话,其实如果想要找到暑期实习就两个月:一个月做项目+深挖,并且不断的背八股。只要自己辛苦一点,五月份之前肯定是可以找到暑期实习的,你有点太过于高看大家之间的技术差距了。不要焦虑不要焦虑。 除此之外说回你这个简历内容的话,基本可以全丢了。如果想做后端,先踏踏实实做两个项目再说+背八股再说。如果想考公,那就直接备战考公。 但是但是就像我前面说的:你考公的理由可以是因为想追求稳定,想追求轻松。但唯独不能是因为觉得自己找不到工作。不能这么小瞧自己和自己的学历。
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客企业服务