98. 检测合法IP地址

中等难度  -通过 / -执行

IPv4

IPv4 地址包含用点隔开的4个数字(octet),每个数字的范围从0到255,比如1.22.33.255。 总共有32 bit,所以可以有最多2^32 = 4,294,967,296 个不同的IPv4 地址。

IPv4不支持开头的0,比如 01.01.01.01 是无效的。

IPv6

IPv6 地址 有 128 个bit ,区隔为8个组(叫做'hexadectet' 或者 'hextet',还没有官方确定),每个组有16个bit,所以可以用4位16进制数来表示,比如2001:0db8:85a3:0000:0000:8a2e:0370:7334

注意IPv6允许打头的0存在。

此外还有一些其他的合法的 IPv6 地址格式,比如Zero compression等,不过不是本体的考虑范围。

任务

你需要实现一个函数,来判定输入的字符串是否是合法的IPv4或者IPv6地址。

追问

你可以通过正则表达式解决这个问题吗?

你的解法的时空复杂度是?

(23)