304 North Cardinal St.
Dorchester Center, MA 02124

# Restore IP Addresses LeetCode Solution

## Problem – Restore IP Addresses LeetCode Solution

valid IP address consists of exactly four integers separated by single dots. Each integer is between `0` and `255` (inclusive) and cannot have leading zeros.

• For example, `"0.1.2.201"` and `"192.168.1.1"` are valid IP addresses, but `"0.011.255.245"``"192.168.1.312"` and `"192.168@1.1"` are invalid IP addresses.

Given a string `s` containing only digits, return all possible valid IP addresses that can be formed by inserting dots into `s`. You are not allowed to reorder or remove any digits in `s`. You may return the valid IP addresses in any order.

Example 1:

``````Input: s = "25525511135"
Output: ["255.255.11.135","255.255.111.35"]
``````

Example 2:

``````Input: s = "0000"
Output: ["0.0.0.0"]
``````

Example 3:

``````Input: s = "101023"
Output: ["1.0.10.23","1.0.102.3","10.1.0.23","10.10.2.3","101.0.2.3"]
``````

Constraints:

• `1 <= s.length <= 20`
• `s` consists of digits only.

## Restore IP Addresses LeetCode Solution in Java

``````public class Solution {
List<String> res = new ArrayList<String>();
int len = s.length();
for(int i = 1; i<4 && i<len-2; i++){
for(int j = i+1; j<i+4 && j<len-1; j++){
for(int k = j+1; k<j+4 && k<len; k++){
String s1 = s.substring(0,i), s2 = s.substring(i,j), s3 = s.substring(j,k), s4 = s.substring(k,len);
if(isValid(s1) && isValid(s2) && isValid(s3) && isValid(s4)){
}
}
}
}
return res;
}
public boolean isValid(String s){
if(s.length()>3 || s.length()==0 || (s.charAt(0)=='0' && s.length()>1) || Integer.parseInt(s)>255)
return false;
return true;
}
}
``````

## Restore IP Addresses LeetCode Solution in Python

``````class Solution(object):
res = []
self.dfs(s, 0, "", res)
return res

def dfs(self, s, idx, path, res):
if idx > 4:
return
if idx == 4 and not s:
res.append(path[:-1])
return
for i in range(1, len(s)+1):
if s[:i]=='0' or (s[0]!='0' and 0 < int(s[:i]) < 256):
self.dfs(s[i:], idx+1, path+s[:i]+".", res)
``````

## Restore IP Addresses LeetCode Solution in C++

``````class Solution {
public:
vector<string> result;
string ip;
dfs(s,0,0,ip,result); //paras:string s,start index of s,step(from0-3),intermediate ip,final result
return result;
}
void dfs(string s,int start,int step,string ip,vector<string>& result){
if(start==s.size()&&step==4){
ip.erase(ip.end()-1); //remove the last '.' from the last decimal number
result.push_back(ip);
return;
}
if(s.size()-start>(4-step)*3) return;
if(s.size()-start<(4-step)) return;
int num=0;
for(int i=start;i<start+3;i++){
num=num*10+(s[i]-'0');
if(num<=255){
ip+=s[i];
dfs(s,i+1,step+1,ip+'.',result);
}
if(num==0) break;
}
}
};
``````
##### Restore IP Addresses LeetCode Solution Review:

In our experience, we suggest you solve this Restore IP Addresses LeetCode Solution and gain some new skills from Professionals completely free and we assure you will be worth it.

If you are stuck anywhere between any coding problem, just visit Queslers to get the Restore IP Addresses LeetCode Solution

Find on Leetcode

##### Conclusion:

I hope this Restore IP Addresses LeetCode Solution would be useful for you to learn something new from this problem. If it helped you then don’t forget to bookmark our site for more Coding Solutions.

This Problem is intended for audiences of all experiences who are interested in learning about Data Science in a business context; there are no prerequisites.

Keep Learning!

More Coding Solutions >>

LeetCode Solutions

Hacker Rank Solutions

CodeChef Solutions