-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDay 168.java
More file actions
32 lines (25 loc) · 987 Bytes
/
Day 168.java
File metadata and controls
32 lines (25 loc) · 987 Bytes
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
import java.util.*;
class Solution {
public ArrayList<String> generateIp(String s) {
ArrayList<String> res = new ArrayList<>();
backtrack(s, 0, 0, "", res);
return res;
}
private void backtrack(String s, int index, int parts, String curr, ArrayList<String> res) {
if(parts == 4 && index == s.length()) {
res.add(curr.substring(0, curr.length() - 1));
return;
}
if(parts == 4 || index == s.length())
return;
for(int len = 1; len <= 3 && index + len <= s.length(); len++) {
String segment = s.substring(index, index + len);
if(segment.length() > 1 && segment.charAt(0) == '0')
continue;
int value = Integer.parseInt(segment);
if(value <= 255) {
backtrack(s, index + len, parts + 1, curr + segment + ".", res);
}
}
}
}