93. 复原IP地址
作者:互联网
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
示例:
输入: "25525511135"
输出: ["255.255.11.135", "255.255.111.35"]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/restore-ip-addresses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1 class Solution { 2 private void helper(String s, int i,int cnt, List<Integer> res,List<String> result) { 3 if (cnt == 4) { 4 String s1 = s.substring(0,res.get(0)); 5 String s2 = s.substring(res.get(0), res.get(1)); 6 String s3 = s.substring(res.get(1), res.get(2)); 7 String s4 = s.substring(res.get(2), s.length()); 8 if (Integer.parseInt(s4) <= 255 && s4.length() <= Integer.toString(Integer.parseInt(s4)).length()) 9 result.add(Integer.parseInt(s1)+"."+Integer.parseInt(s2)+"."+Integer.parseInt(s3)+"."+Integer.parseInt(s4)); 10 return ; 11 } 12 13 for (int j = i+1; j < s.length(); j++) { 14 // 判断划分是否合理 15 String s0 = s.substring(i,j); 16 int i1 = Integer.parseInt(s0); 17 if (i1 > 255) 18 break; 19 if (s.length() - j > (3-cnt+1)*3) 20 continue; 21 if (s0.length() > Integer.toString(i1).length()) { 22 break; 23 } 24 25 res.add(j); 26 helper(s, j, cnt+1, res, result); 27 res.remove(res.size()-1); 28 } 29 } 30 31 public List<String> restoreIpAddresses(String s) { 32 List<Integer> res = new ArrayList<>(); 33 List<String> result = new ArrayList<>(); 34 // 首次划分(第一个小数点的位置) 35 for (int i = 1; i < s.length(); i++) { 36 String s0 = s.substring(0, i); 37 int i1 = Integer.parseInt(s0); 38 if (i1 > 255) 39 break; 40 if (s.length() - i > 3*3) 41 continue; 42 if (s0.length() > Integer.toString(i1).length()) { 43 break; 44 } 45 res.add(i); 46 helper(s, i, 2, res, result); 47 res.remove(res.size()-1); 48 } 49 return result; 50 } 51 }
标签:String,get,res,List,length,result,IP地址,93,复原 来源: https://www.cnblogs.com/yfs123456/p/11602001.html