【LeeCode中等バイトpython 3】93.IPアドレスの復元
もっと快適なレイアウトを見たい、もっと時間通りにプッシュして公衆番号に注目したい「あまり器用ではないプログラマー」は毎日8時に乾物プッシュがあり、微信はいつでもあなたの疑問に答えます.
93.IPアドレスpython 3を復元する
数値のみを含む文字列を指定し、それを復元し、可能なすべてのIPアドレスフォーマットを返します.
有効なIPアドレスは、ちょうど4つの整数(各整数は0から255の間にある)であり、整数の間には「.」が用いられる.区切る.
例:
入力:「2552511135」出力:[「255.255.1.135」、「255.255.11.35」
93.IPアドレスpython 3を復元する
数値のみを含む文字列を指定し、それを復元し、可能なすべてのIPアドレスフォーマットを返します.
有効なIPアドレスは、ちょうど4つの整数(各整数は0から255の間にある)であり、整数の間には「.」が用いられる.区切る.
例:
入力:「2552511135」出力:[「255.255.1.135」、「255.255.11.35」
from typing import List
# 54%
# :48 ms
# :13.5 MB
class Solution:
def restoreIpAddresses(self, s: str) -> List[str]:
n = len(s)
ips = []
def is_ipx(ipx):
if int(ipx) > 255 or (ipx[0] == "0" and (int(ipx) > 0 or len(ipx) > 1)):
return True
return False
for p1 in range(1, 4):
ip1 = s[:p1]
if p1 > n or p1 + 9 < n or is_ipx(ip1):
continue
for p2 in range(1, 4):
ip2 = s[p1: p1+p2]
if p1+p2 > n or p1 + p2 + 6 < n or is_ipx(ip2):
continue
for p3 in range(1, 4):
ip3 = s[p1+p2: p1+p2+p3]
if p1+p2+p3 > n or p1 + p2 + p3 + 6 < n or is_ipx(ip3):
continue
for p4 in range(1, 4):
ip4 = s[p1+p2+p3: p1 + p2 + p3 + p4]
if p1 + p2 + p3 + p4 > n or p1 + p2 + p3 + p4 < n or is_ipx(ip4):
continue
ips.append(".".join([ip1, ip2, ip3, ip4]))
return ips
s = Solution()
nums = "25525511135"
ret = s.restoreIpAddresses(nums)
print(ret)
nums = "2552551113"
ret = s.restoreIpAddresses(nums)
print(ret)
nums = "255251135"
ret = s.restoreIpAddresses(nums)
print(ret)
nums = "2552"
ret = s.restoreIpAddresses(nums)
print(ret)
nums = "2"
ret = s.restoreIpAddresses(nums)
print(ret)
nums = "010010"
ret = s.restoreIpAddresses(nums)
print(ret, ret == ["0.10.0.10", "0.100.1.0"])