某网络系统需要对输入的IP地址进行合法性判断。IP地址由四个十进制数字组成,每个数字的取值范围是0到255(包含0和255)。 IP地址的格式为X.X.X.X,其中X表示一个十进制数字。系统要求判断输入的IP地址是否合法,即满足以下条件: 1.IP地址由四个数字组成,用点号分隔。 2.每个数字的取值范围是0到255。 3.数字之间没有多余的前导零,例如01是非法的。 4.IP地址不能以点号开始或结束,例如.192.168.0.1和192.168.0.1.是非法的。 不合法的情况下输出"invalid",合法的情况下,你还需要判断是哪一类地址: A类地址:地址范围从1.0.0.0到126.0.0.0 B类地址:地址范围从128.0.0.0到191.255.255.255 C类地址:范围从192.0.0.0到223.255.255.255 其它地址:合法输入,但是不是A、B、C类 请通过代码实现上述功能
一行字符串,表示需要判断的IP地址
不合法的情况下,输出“invalid” A类地址,输出“A_address" B类地址,输出“B_address" C类地址,输出“C_address" 其它地址,输出“other”
1.2.3.4
A_address
1.1.1.256a
invalid
192.168.0.1
C_address
考点:字符串
限制 1 秒 / 256MB | 标准输入输出
推荐方向:字符串
本题切入点
按四条规则逐项校验:段数、每段 0~255、无前导零、首尾无点号;再按首段数值判断 A/B/C 类。
按字符逐个处理,或利用字符串的前后缀性质加速匹配。
思路框架(字符串 通法 · 非本题专属)
实现要点:Python 切片 s[l:r+1] 取子串;注意字符串不可变,频繁拼接改用 list。
复杂度:时间 O(n) ~ O(n²) | 空间 O(n)
该范式的通法易错点
样例 1
1.2.3.4A_address样例 2
1.1.1.256ainvalid解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2023年美团秋招编程岗第三批笔试。