-
Notifications
You must be signed in to change notification settings - Fork 132
/
Copy path093 Restore IP Addresses.py
36 lines (30 loc) · 1.14 KB
/
093 Restore IP Addresses.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
'''
Given a string containing only digits, restore it by returning all possible valid IP address combinations.
For example:
Given "25525511135",
return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)
'''
class Solution(object):
def restoreIpAddresses(self, s):
"""
:type s: str
:rtype: List[str]
"""
result = []
self._restoreIpAddresses(0, s, [], result)
return result
def _restoreIpAddresses(self, length, s, ips, result):
if not s:
if length == 4:
result.append('.'.join(ips))
return
elif length == 4:
return
self._restoreIpAddresses(length + 1, s[1:], ips + [s[:1]], result)
if s[0] != '0':
if len(s) >= 2:
self._restoreIpAddresses(length + 1, s[2:], ips + [s[:2]], result)
if len(s) >= 3 and int(s[:3]) <= 255:
self._restoreIpAddresses(length + 1, s[3:], ips + [s[:3]], result)
if __name__ == "__main__":
assert Solution().restoreIpAddresses("25525511135") == ['255.255.11.135', '255.255.111.35']