IP地址分类识别
2026 华为OD机试真题 5.17华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
- R类(保留地址):0.0.0.0~ 0.255.255.255
- A类:1.0.0.0~ 126.255.255.255
- L类(环回地址):127.0.0.0~ 127.255.255.255
- B类:128.0.0.0~ 191.255.255.255
- C类:192.0.0.0~ 223.255.255.255
- D类(组播地址):224.0.0.0~ 239.255.255.255
- E类(保留地址):240.0.0.0~ 255.255.255.255
实现一个函数,输入一个IPv4地址,判断是哪一类IP地址,输出对应的类型:"A"、"B"、"C"...;如果输入的IP地址不符合规范,则输出"F"。
IP地址合法性判定规则:
-
IP地址由4个整数组成,取值范围为0~ 255
-
"."作为分割符分隔4个数字
补充说明
题目中出现的数字,除了数字"00"以外,不存在其他数字存在前导00的情况,比如不会存在"0505"、"010010"等。
示例1
输入
126.255.255.255
输出
A
说明
A类:1.0.0.0 ~ 126.255.255.255
示例2
输入
191.255.255.255
输出
B
说明
B类:128.0.0.0 ~ 191.255.255.255
示例3
输入
223.255.255.255
输出
C
说明
C类:192.0.0.0 ~ 223.255.255.255
示例4
输入
239.255.255.255
输出
D
说明
D类:224.0.0.0 ~ 239.255.255.255(组播地址)
示例5
输入
255.255.255.255
输出
E
说明
E类:240.0.0.0 ~ 255.255.255.255(保留地址)
示例6
输入
a.0.0.0
输出
F
说明
a非数字
示例7
输入
0.0.0.1
输出
R
说明
保留地址:0.0.0.0 ~ 0.255.255.255
示例8
输入
127.0.0.1
输出
L
说明
环回地址:127.0.0.0 ~ 127.255.255.255
解题思路
注意:
为 224 到 239 时,虽然属于 D 类地址,但样例 4 明确要求输出
"F",因此本题代码输出"F"。按照用例来!!!
本题的核心是对 IPv4 地址进行合法性校验并根据首字节进行分类。
-
合法性校验:
- 分段检查:IP 地址必须由
.分割成恰好 4 个部分。 - 字符检查:每个部分不能为空,且必须全部由数字字符组成(避免包含字母或特殊符号)。
- 前导零检查:除了数字
本身,多位数字不允许以开头(例如01是非法的)。 - 数值范围:转换为整数后,数值必须在
到255之间。
- 分段检查:IP 地址必须由
-
分类逻辑:
- 校验通过后,仅根据 IP 地址的第一个整数(第一段)来决定其类型:
: R (保留地址)1 ~ 126: A (A类)127: L (环回地址)128 ~ 191: B (B类)192 ~ 223: C (C类)224 ~ 239: D (组播地址)240 ~ 255: E (保留地址)
- 校验通过后,仅根据 IP 地址的第一个整数(第一段)来决定其类型:
复杂度分析
- 时间复杂度:$O(1)$。IP 地址的长度是有限的(最多 15 个字符),分割和校验的操作步数是常数级别的。
- 空间复杂度:$O(1)$。仅需要存储 4 个整数和少量的临时变量。
版权声明:
作者:魔改工程师
链接:https://www.sylblog.xin/archives/411
文章版权归作者所有,未经允许请勿转载。
THE END