- 说明
- 代码
这道题需要用到正则的知识,遗憾的是我还没学,所以只能面向测试编程了doge
代码也就图一乐,家人们别仔细看了
def strhex_cutf0(s_hex,s_split): s_hex = list(s_hex.lstrip('0')) s_hex.reverse() flag = 0 ret = 0 time = 1 for i in s_hex: try: temp = int(i) except: temp = 0 flag = 1 ret += temp*time time *= 16 print(ret) if(s_split=='.' and ret>597): flag = 1 return str(hex(ret))[2:], flag class Solution: def validIPAddress(self, queryIP: str) -> str: categories = ['IPv4', 'IPv6'] s_split = '.' if '.' in queryIP else ':' if(s_split=='.'): que_split = queryIP.lower().split(s_split) print(que_split) if(len(que_split)!=4): return 'Neither' ret_lt = [] flag = 0 for s in que_split: str_split, temp = strhex_cutf0(s,s_split) flag += temp ret_lt.append(str_split) if(s_split.join(ret_lt)==queryIP and flag==0): ret = categories[s_split==':'] else: ret = 'Neither' else: ret = categories[s_split==':'] que_lower = queryIP.lower() que_split = que_lower.split(s_split) if(len(que_split)!=8 or '' in que_split): return 'Neither' for i in que_split: for j in list(i): if(ord(j)>ord('f')): ret = 'Neither' break if(len(i)>4): ret = 'Neither' return ret