import java.util.ArrayList;
import java.util.List;
/**
* 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
*
* 有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.' 分隔。
* 示例:
*
* 输入: "25525511135"
* 输出: ["255.255.11.135", "255.255.111.35"]
* 来源:力扣(LeetCode)
* 链接:https://leetcode-cn.com/problems/restore-ip-addresses
* 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
*/
public class Eg2 {
public static void main(String[] args) {
List<String> list = restoreIpAddresses("25525511135");
System.out.println(list);
}
public static List<String> restoreIpAddresses(String s) {
List<String> ips = new ArrayList<>();
split(new StringBuilder(),new StringBuilder(s),4,ips);
return ips;
}
public static List<String> split(StringBuilder start,StringBuilder content, int num,List<String> res){
if("".equals(content.toString())){
return res;
}
if(content.length()>3*num){
return res;
}
if(num ==1){
if(content.length()>1 &&content.indexOf("0")==0){
return res;
}
if(Integer.parseInt(content.toString())>255){
return res;
}
res.add(start+content.toString());
return res;
}
if(content.length()<num){
return res;
}
if(content.length()>=1){
String ip1 = content.substring(0, 1);
StringBuilder newStart = new StringBuilder().append(start).append(ip1).append(".");
split(newStart,new StringBuilder(content.substring(1)),num-1,res);
if("0".equals(ip1)){
return res;
}
}
if(content.length()>=2){
String ip2 = content.substring(0, 2);
StringBuilder newStart = new StringBuilder().append(start).append(ip2).append(".");
split(newStart,new StringBuilder(content.substring(2)),num-1,res);
}
if(content.length()>=3){
String ip3 = content.substring(0, 3);
if(Integer.parseInt(ip3)>255){
return res;
}
StringBuilder newStart = new StringBuilder().append(start).append(ip3).append(".");
split(newStart,new StringBuilder(content.substring(3)),num-1,res);
}
return res;
}
}
LeetCode 93:复原ip地址
最新推荐文章于 2024-08-11 16:21:57 发布