2026/4/17 2:28:01
网站建设
项目流程
上海有多少个网站科技公司,网站建设线上线下双服务器,扫二维码直接进入网站 怎么做,360免费建站网页链接力扣-真题-复原IP地址IP地址#xff0c; 一个数字 转换成四个#xff0c; 需要用三个标点符号#xff0c;
其实就是三次选择#xff0c; 选择的位置不能 一样#xff0c;
同时 这个标点符号 前的数字 需要满足
前缀不能为0 ,数字 在 0 到 255 (当 字符串的长度大于3 直…力扣-真题-复原IP地址IP地址 一个数字 转换成四个 需要用三个标点符号其实就是三次选择 选择的位置不能 一样同时 这个标点符号 前的数字 需要满足前缀不能为0 ,数字 在 0 到 255 (当 字符串的长度大于3 直接break)然后 递归截止的条件是 三次选择做完 ,同时需要注意 剩下的位数 应该足够后面剩下 的数字数量 比如 计算 第一个数字的时候 就需要保留至少3位数 少了 就不可能拼成IP。代码如下publicstaticListStringrestoreIpAddresses(Strings){ListStringresultnewArrayList();getResult(0,0,s,result,);returnresult;}publicstaticvoidgetResult(intpointNum,intindex,Strings,ListStringresult,StringtemResult){if(pointNum3){Stringsubstrings.substring(index);if(substring.length()1substring.charAt(0)0)return;if(substring.length()3)return;intiInteger.parseInt(substring);if(i255)return;result.add(temResultsubstring);return;}for(intiindex;is.length();i){intsize3-pointNum;if(sizes.length()-i-1)break;Stringtems.substring(index,i1);System.out.println(tem);if(tem.length()1tem.charAt(0)0)break;inttemNumInteger.parseInt(tem);if(temNum255)break;getResult(pointNum1,i1,s,result,temResulttem.);}}复杂度时间复杂度O(1) - 固定的递归深度因为对于一个IP地址最多只能有3个点每个点最多分割3位数字所以递归的深度是固定的最多只有4段每段最多3个字符。这意味着递归的路径数量是有限的不会随着输入字符串长度无限增长空间复杂度O(1) - 固定的递归深度和有限的结果数量