• Restore IP Addresses leetcode java


    题目

    Given a string containing only digits, restore it by returning all possible valid IP address combinations.

    For example:
    Given "25525511135",

    return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)

    题解

    利用循环递归解决子问题。对于每个段内数来说,最多3位最少1位,所以在每一层可以循环3次,来尝试填段。因为IP地址最多4个分段,当层数是3的时候说明已经尝试填过3个段了,那么把剩余没填的数段接到结尾即可。

    这个过程中要保证的是填的数是合法的,最后拼接的剩余的数也是合法的。

     注意开头如果是0的话要特殊处理,如果开头是0,判断整个串是不是0,不是的话该字符就是非法的。因为001,01都是不对的。

    代码如下:

     1     public ArrayList<String> restoreIpAddresses(String s) {  
     2         ArrayList<String> res = new ArrayList<String>();  
     3         String item = new String();
     4         if (s.length()<4||s.length()>12) 
     5         return res;  
     6         
     7         dfs(s, 0, item, res);  
     8         return res;  
     9     }  
    10       
    11     public void dfs(String s, int start, String item, ArrayList<String> res){  
    12         if (start == 3 && isValid(s)) {  
    13             res.add(item + s);  
    14             return;  
    15         }  
    16         for(int i=0; i<3 && i<s.length()-1; i++){  
    17             String substr = s.substring(0,i+1);  
    18             if (isValid(substr))
    19                 dfs(s.substring(i+1, s.length()), start+1, item + substr + '.', res);  
    20         }  
    21     }  
    22       
    23     public boolean isValid(String s){  
    24         if (s.charAt(0)=='0')
    25             return s.equals("0");  
    26             int num = Integer.parseInt(s);
    27             
    28         if(num <= 255 && num > 0)
    29             return true;
    30         else
    31             return false;
    32     } 

     Refrence:http://blog.csdn.net/u011095253/article/details/9158449

  • 相关阅读:
    第四单元博客总结——暨OO课程总结
    OO--第三单元规格化设计 博客作业
    关于博客园主——他死了
    编译错误总集
    密码是我QQ签名
    P1600 天天爱跑步
    天气之子——天空上是另一个世界
    可持久化01trie树——模板
    P1270 “访问”美术馆——不太一样的树形DP
    P1099 树网的核——模拟+树形结构
  • 原文地址:https://www.cnblogs.com/springfor/p/3886409.html
Copyright © 2020-2023  润新知