题目描述 给定一个只包含数字的字符串,用以表示一个 IP 地址,返回所有可能从 s 获得的 有效 IP 地址 。你可以按任何顺序返回答案。有效 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。例如:"0.1.2.201" 和 "192.168.1.1" 是有效 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是无效 IP 地址。
示例1: 
输入:s = "25525511135" 输出:["255.255.11.135","255.255.111.35"] 
 
示例2: 
输入:s = "0000" 输出:["0.0.0.0"] 
 
解题思路 定义辅助函数,递归调用辅助函数解决问题。辅助函数接收未处理的字符串以及部分 ip 分组,例如对于一个字符串 "25525511135",那么传入该辅助函数的参数可能为 ("11135", [255, 255]),当字符串处理完毕时结束递归调用,或者 ip 分组中元素个数大于 4 也可停止递归调用。
List<String> results = new  ArrayList<>(); public  List<String> restoreIpAddresses (String s)   {         if  (s.length() < 4 ) {         return  results;     }     restoreIpAddresses(s, new  ArrayList<>());     return  results; } private  void  restoreIpAddresses (String leftString, List<String> ip)   {         if  (ip.size() > 4 ) {         return ;     }          int  leftL = leftString.length();     if  (leftL < (4  - ip.size()) || leftL > (4  - ip.size()) * 3 ) {         return ;     }          if  (ip.size() == 4  && leftL == 0 ) {         StringBuilder stringBuilder = new  StringBuilder();         for  (int  i = 0 ; i < ip.size(); i++) {             stringBuilder.append(ip.get(i));             if  (i != ip.size() - 1 ) {                 stringBuilder.append(("." ));             }         }         results.add(stringBuilder.toString());         return ;     }               for  (int  i = 1 ; i <= Math.min(3 , leftL); i++) {         String str = leftString.substring(0 , i);                  if  (!isValidIp(str)) {             break ;         }         ip.add(str);         restoreIpAddresses(leftString.substring(i), ip);         ip.remove(ip.size() - 1 );     } } private  boolean  isValidIp (String s)   {         int  l = s.length();     if  (l < 1  || l > 3 ) {         return  false ;     }          int  n = Integer.parseInt(s);     if  (n < 0  || n > 255 ) {         return  false ;     }          if  (l == 2  && n <= 9 ) {         return  false ;     } else  if  (l == 3  && n <= 99 ) {         return  false ;     }     return  true ; } 
 
参考链接