题目
给定一个字符串 queryIP
。如果是有效的 IPv4 地址,返回
"IPv4"
;如果是有效的 IPv6 地址,返回 "IPv6"
;如果不是上述类型的 IP 地址,返回 "Neither"
。
有效的IPv4地址 是 “x1.x2.x3.x4”
形式的IP地址。 其中 0 <= x^{i} <= 255
且
x^{i}
不能包含 前导零。例如:
“192.168.1.1”
、 “192.168.1.0”
为有效IPv4地址, “192.168.01.1”
为无效IPv4地址;
“192.168.1.00”
、 “192.168@1.1”
为无效IPv4地址。
一个有效的IPv6地址
是一个格式为“x1:x2:x3:x4:x5:x6:x7:x8”
的IP地址,其中:
- \(1 <= x^{i}.length <= 4\)
- \(x^{i}\) 是一个
十六进制字符串 ,可以包含数字、小写英文字母(
'a'
到'f'
)和大写英文字母('A'
到'F'
)。 - 在
x^{i}
中允许前导零。
例如 "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
和
"2001:db8:85a3:0:0:8A2E:0370:7334"
是有效的 IPv6 地址,而
"2001:0db8:85a3::8A2E:037j:7334"
和
"02001:0db8:85a3:0000:0000:8a2e:0370:7334"
是无效的 IPv6
地址。
示例 1:
输入:queryIP = "172.16.254.1"
输出:"IPv4"
解释:有效的 IPv4 地址,返回 "IPv4"
示例 2:
输入:queryIP = "2001:0db8:85a3:0:0:8A2E:0370:7334"
输出:"IPv6"
解释:有效的 IPv6 地址,返回 "IPv6"
示例 3:
输入:queryIP = "256.256.256.256"
输出:"Neither"
解释:既不是 IPv4 地址,又不是 IPv6 地址
提示:
queryIP
仅由英文字母,数字,字符'.'
和':'
组成。
相似题目
题解
模拟
IPv4
按 .
分割,IPv6
按
:
分割,将字符串分割后再逐项校验是否符合要求即可。
个人踩坑的测试用例:
1 | "00.0.0.0" |
代码
1 | # Code language: Python |
没什么特别意义的题目,主要还是考察细心和检查边界状况,就不罗列其他语言代码了,其实是懒 🤣
- 时间复杂度: \(O(C)\), \(C\) 为 32 即 IPv6 地址的长度
- 空间复杂度: \(O(C)\)
最后
如果对你有帮助的话,请给我点个赞吧~