《华为机试》刷题之HJ90 合法IP
一、题目
二、示例
三、代码
代码 1:
while True: try: temp = input().split(.) signal = 0 if len(temp) != 4: print(NO) for item in temp: if not item.isdigit(): print(NO) elif int(item) > 255 or (item.startswith(0) and len(item) > 1): print(NO) else: signal += 1 if signal == 4: print(YES) except: break
代码 2:
while True: try: temp = input().split(.) list1 = [str(i) for i in range(0, 256)] signal = 0 if len(temp) != 4: print(NO) for item in temp: if item not in list1: print(NO) else: signal += 1 if signal == 4: print(YES) except: break
四、算法说明
将输入的网址按照‘.’进行分割; 判断temp长度,如果不等于 4,直接输出NO; 用for循环遍历列表temp:
-
如果有非数字的字符,直接输出NO; 如果数值超过 255,或者开始字符为 0,但是长度大于 1 的情况,例如06,直接输出NO; 否则,将标志位 +1,进入下一次循环。
如果标志位signal == 4,说明地址合法,输出YES。
代码 1 是寻找不合法的字符特征,和代码 1 不同之处在于,代码 2 是寻找合法数据的特征,两个思路形成互补;代码 2 建立了一个[0,255]的列表,判断 IP 地址的字符是否包含在列表中。
胡萝卜
2022年1月20日17:19:03
上一篇:
IDEA上Java项目控制台中文乱码