美文网首页
复原IP地址

复原IP地址

作者: 小白学编程 | 来源:发表于2019-02-19 13:05 被阅读0次

    给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。

    示例:

    输入: "25525511135"
    输出: ["255.255.11.135", "255.255.111.35"]

    思路

    采用递归的方式,ip地址有4段,每一段有1位,2位,3位的三种可能,每一段的字符不能大于255,并且不能出现像01, 001, 010这一类的字符

    class Solution {
        public List<String> restoreIpAddresses(String s) {
            List<String> list = new ArrayList<>();
            if (s.length() > 12 || s.length() == 0) return list;
            restore(0, "", s, list);
            return list;
        }
    
        public static void restore(int k, String str, String s, List<String> list) {
            if (k == 4) {
                if (s.isEmpty()) {
                    list.add(str);           
                }
                return;
                
            }
            for (int i = 0; i < 3; i++) {
                if (i + 1 > s.length()) {
                    break;
                }
                String temp = s.substring(0, i + 1);
                 
                if (check(temp, i + 1)) {
                    if (k < 3) {
                        temp = temp + ".";
                    }
                    restore(k + 1, str + temp, s.substring(i + 1), list);
                } else {
                    continue;
                }
            }
            
    
        }
    
        public static boolean check(String str, int k) {
            Integer val = Integer.valueOf(str);
            if (val > 255) {
                return false;
            } else if (String.valueOf(val).length() < k) {
                return false;
            }
            return true;
        }
    }
    

    相关文章

      网友评论

          本文标题:复原IP地址

          本文链接:https://www.haomeiwen.com/subject/utbxyqtx.html