题目

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

转载于:https://www.cnblogs.com/springfor/p/3886409.html

Restore IP Addresses leetcode java相关推荐

  1. [LeetCode]93.Restore IP Addresses

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

  2. 【DFS + backtrack】LeetCode 93. Restore IP Addresses

    LeetCode 93. Restore IP Addresses Solution1:我的答案 怎么就这么慢... class Solution { public:vector<string& ...

  3. [LeetCode] Restore IP Addresses 复原IP地址

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

  4. [LeetCode] Restore IP Addresses 复原IP地址

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

  5. [leetcode] Restore IP Addresses

    这个题目就和Palindrome Partitioning很像了,而且比那个的DFS的递归要简单一些,让常人更好理解一些.但是边界条件更多,要考虑清楚. 整体思路就是深度优先搜索,首先看到边界条件没, ...

  6. LeetCode:Restore IP Addresses

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

  7. LeetCode 93. Restore IP Addresses

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

  8. 【leetcode刷题笔记】Restore IP Addresses

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

  9. LeetCode Restore IP Addresses(回溯法)

    题意:给出一个由数字组成的字符串,求其能表示的ip地址列表 注意不能有前缀0,如010 思路:每次操作时,有两种情况,一种是添加点,一种是将其作为当前数的后序数. 在小数点的个数超过3时,递归退出. ...

最新文章

  1. 调试webservice遇到“测试窗体只能用于使用基元类型作为参数的方法”的解决办法...
  2. c++ 调用labview_LabVIEW面向对象编程_初窥门径(5):开发方式漫谈
  3. vue一二级联动清空二级数据_【周一实用技巧】二级联动还不够,自动更新才最牛。Excel 2013利用数据验证条件制作一级、二级联动和自动更新下拉列表...
  4. 1.5 特征缩放-机器学习笔记-斯坦福吴恩达教授
  5. Ubuntu18.04下安装MySQL
  6. 人工智能数学基础知识
  7. 关于tag,viewWithTag
  8. mysql配置环境变量(win 10)_mysql配置环境变量(win 10)
  9. 官方中文文档上线了!Python各种教程已汉化。
  10. sysctl修改内核参数
  11. java离线语音识别_你家的油烟机,可以语音控制了吗?
  12. CodeForces 698A - Vacations (Codeforces Round #363 (Div. 2))
  13. html电脑上面点击穿透,click300ms点击问题和点击穿透.html
  14. php加速 PHP APC 浅析
  15. 软件设计模式与体系结构 期末课后题
  16. 如何降低计算机版本,电脑系统WIN10如何降级,还原老系统_win10专业版教程
  17. 洛谷 P1095 守望者的逃离
  18. 十六进制代码C语言,十六进制转换器C语言代码。怎么办?
  19. 《浪潮之巅》 18 挑战者 Google公司
  20. 范围管理-输入、输出、工具和技术

热门文章

  1. 隐马尔可夫(HMM)
  2. 个简单C++程序反汇编解析 (Rev. 3)
  3. golang中的http客户端
  4. rabitMQ优缺点
  5. Hash索引和B+树索引
  6. UART0串口编程(五):串口编程(UART0)之UC/OS(一)UC/OS下的串口发送任务编程
  7. 关于shared library的描述
  8. win10家庭版远程桌面连接出现身份验证错误
  9. Jenkins + Git + Maven + tomcat集成环境搭建
  10. 利用zxing读写PDF417码制的二维码