-
-
Notifications
You must be signed in to change notification settings - Fork 50.3k
Expand file tree
/
Copy pathip_address.py
More file actions
45 lines (34 loc) · 1.41 KB
/
ip_address.py
File metadata and controls
45 lines (34 loc) · 1.41 KB
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
37
38
39
40
41
42
43
44
45
"""
Restore IP Addresses
-> IP Address consists of exactly four integers seperated by single dots.
-> Each integer is between 0 and 255.
-> Exempli Gratia - 192.168.1.1 is valid ip address but 192.168@1.1 is an invalid ip address.
We are given with a string containing only digits , return all possible valid IP Addresses that
can be formed by inserting dots in the string.
--> Not allowed to reorder or remove any digits in the string.
--> Return valid IP addresses in any order.
Topics covered: Backtracking
Example:
Input: s = "25525511135"
Output: ["255.255.11.135","255.255.111.35"]
"""
class Solution:
def restoreIpAddresses(self, s: str):
res = []
def backtrack(start, path):
# Base case: if we have 4 parts and used all digits
if len(path) == 4:
if start == len(s):
res.append(".".join(path))
return
# Try segments of length 1 to 3
for l in range(1, 4):
if start + l > len(s):
break
segment = s[start:start + l]
# Skip invalid parts (leading zeros or > 255)
if (segment.startswith('0') and len(segment) > 1) or int(segment) > 255:
continue
backtrack(start + l, path + [segment])
backtrack(0, [])
return res