《华为机试》刷题之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项目控制台中文乱码
