IP 주소 확인
queryIP
가 주어지면 IP가 유효한 IPv4 주소이면 "IPv4"
를, IP가 유효한 IPv6 주소이면 "IPv6"
를, IP가 어떤 유형의 올바른 IP가 아니면 "Neither"
를 반환합니다.유효한 IPv4 주소는
"x1.x2.x3.x4"
형식의 IP입니다. 여기서 0 <= xi <= 255
및 xi
는 선행 0을 포함할 수 없습니다. 예를 들어 "192.168.1.1"
및 "192.168.1.0"
는 유효한 IPv4 주소이고 "192.168.01.1"
, "192.168.1.00"
및 "[email protected]"
는 잘못된 IPv4 주소입니다.유효한 IPv6 주소는
"x1:x2:x3:x4:x5:x6:x7:x8"
형식의 IP입니다.1 <= xi.length <= 4
xi
는 숫자, 영문 소문자('a'
~ 'f'
) 및 영문 대문자( 'A'
~ 'F'
)를 포함할 수 있는 16진수 문자열입니다. xi
에서 선행 0이 허용됩니다. 예를 들어 "
2001:0db8:85a3:0000:0000:8a2e:0370:7334"
및 "2001:db8:85a3:0:0:8A2E:0370:7334"
는 유효한 IPv6 주소이고 "2001:0db8:85a3::8A2E:037j:7334"
및 "02001:0db8:85a3:0000:0000:8a2e:0370:7334"
는 잘못된 IPv6 주소입니다.예 1:
입력: queryIP = "172.16.254.1"
출력: "IPv4"
설명: 유효한 IPv4 주소입니다. "IPv4"를 반환합니다.
예 2:
입력: queryIP = "2001:0db8:85a3:0:0:8A2E:0370:7334"
출력: "IPv6"
설명: 유효한 IPv6 주소입니다. "IPv6"을 반환합니다.
예 3:
입력: queryIP = "256.256.256.256"
출력: "둘 다"
설명: IPv4 주소도 IPv6 주소도 아닙니다.
제약:
queryIP
는 영문자, 숫자, 영문자 '.'
, ':'
로만 구성됩니다. 해결책:
class Solution:
def validIPAddress(self, queryIP: str) -> str:
isv4 = True
isv6 = True
if "." in queryIP:
isv6 = False
queryIP = queryIP.split(".")
if len(queryIP) != 4:
isv4 = False
else:
isv4 = False
if ":" in queryIP:
isv4 = False
queryIP = queryIP.split(":")
if len(queryIP) != 8:
isv6 = False
else:
isv6 = False
if isv4:
for x in queryIP:
if not x.isnumeric() or (len(x) > 1 and x[0] == "0") or not 0 <= int(x) < 256:
isv4 = False
break
if isv6:
for x in queryIP:
try:
int(x, 16)
if len(x) > 4:
raise
except:
isv6 = False
break
if isv4:
return "IPv4"
if isv6:
return "IPv6"
return "Neither"
Reference
이 문제에 관하여(IP 주소 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/validate-ip-address-5bd4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)