题解 | 验证IP地址
验证IP地址
https://www.nowcoder.com/practice/55fb3c68d08d46119f76ae2df7566880
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # 验证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