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)
1 public class Solution { 2 public List<String> restoreIpAddresses(String s) { 3 List<String> res=new ArrayList<String>(); 4 if(s.length()<4||s.length()>12) return res; 5 dfs(s,"",res,0); 6 return res; 7 } 8 public static void dfs(String s,String temp,List<String> list,int count){ 9 if(count==3&&isValid(s)){ 10 list.add(temp+s); 11 return; 12 } 13 for(int i=1;i<4&&i<s.length();i++){ 14 String substr=s.substring(0,i); 15 if(isValid(substr)){ 16 dfs(s.substring(i),temp+substr+".",list,count+1); 17 } 18 } 19 } 20 21 public static boolean isValid(String s){ 22 if(s.charAt(0)=='0') return s.equals("0"); 23 int num=Integer.parseInt(s); 24 return num<=255&&num>0; 25 } 26 public static void main(String[] args) { 27 // TODO Auto-generated method stub 28 Scanner sc=new Scanner(System.in); 29 solution sl=new solution(); 30 31 List<String> list=sl.restoreIpAddresses(sc.next()); 32 33 for(String i:list){ 34 System.out.println(i); 35 } 36 } 37 38 }