#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 验证IP地址
# @param IP string字符串 一个IP地址字符串
# @return string字符串
#
class Solution:
def IPV4(self, IP):
# 检查点号的数量是否为 3
if IP.count(".") != 3:
return "Neither"
ipv4_list = IP.split(".")
# IPv4 地址必须由 4 部分组成
if len(ipv4_list) != 4:
return "Neither"
for part in ipv4_list:
# 检查每一部分是否为空
if part == "":
return "Neither"
try:
num_int = int(part)
# 检查数字范围是否在 0 - 255 之间
if num_int > 255 or num_int < 0:
return "Neither"
# 检查是否有多余的前导 0
if len(part) > 1 and part[0] == "0":
return "Neither"
except ValueError:
return "Neither"
return "IPv4"
def IPV6(self, IP):
# 检查冒号的数量是否为 7
if IP.count(":") != 7:
return "Neither"
ipv6_list = IP.split(":")
# IPv6 地址必须由 8 部分组成
if len(ipv6_list) != 8:
return "Neither"
valid_chars = set('0123456789abcdefABCDEF')
for part in ipv6_list:
# 检查每一部分的长度是否在 1 - 4 之间
if len(part) < 1 or len(part) > 4:
return "Neither"
# 检查每一部分是否只包含合法的十六进制字符
for char in part:
if char not in valid_chars:
return "Neither"
return "IPv6"
def solve(self, IP: str) -> str:
output = ""
if "." in IP and ":" not in IP:
output = self.IPV4(IP)
elif ":" in IP and "." not in IP:
output = self.IPV6(IP)
else:
output = "Neither"
return output