算法系列——Restore IP Addresses
来源:互联网 发布:西安朝阳软件培训中心 编辑:程序博客网 时间:2024/05/16 04:57
题目描述
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)
解题思路
一是只要遇到字符串的子序列或配准问题首先考虑动态规划DP,二是只要遇到需要求出所有可能情况首先考虑用递归。这道题并非是求字符串的子序列或配准问题,更符合第二种情况,所以我们要用递归来解。我们用k来表示当前还需要分的段数,如果k = 0,则表示三个点已经加入完成,四段已经形成,若这时字符串刚好为空,则将当前分好的结果保存。若k != 0, 则对于每一段,我们分别用一位,两位,三位来尝试,分别判断其合不合法,如果合法,则调用递归继续分剩下的字符串,最终和求出所有合法组合。
程序实现
public class Solution { private List<String> result=new ArrayList<String>(); public List<String> restoreIpAddresses(String s) { if(s==null||s.length()<4||s.length()>12) return result; restore(s,4,""); return result; } private void restore(String s,int k,String out){ if(k==0&&s.isEmpty()){ result.add(out); return; } for(int i=1;i<=3;i++){ if(s.length()>=i&&isValid(s.substring(0,i))){ if(k==1) restore(s.substring(i),k-1,out+s.substring(0,i)); else restore(s.substring(i),k-1,out+s.substring(0,i)+"."); } } } private boolean isValid(String s){ if(s==null||s.isEmpty()||s.length()>3||(s.length()>1&&s.charAt(0)=='0')) return false; int res=Integer.valueOf(s); return res<=255&&res>=0; }}
阅读全文
0 0
- 算法系列——Restore IP Addresses
- LeetCode93—Restore IP Addresses
- 算法训练: Restore IP Addresses
- LeetCode93——Restore IP Addresses
- leetcode 093 —— Restore IP Addresses
- Leetcode——93. Restore IP Addresses
- Algorithms—93.Restore IP Addresses
- [leetcode刷题系列]Restore IP Addresses
- 93. Restore IP Addresses 回溯算法
- 算法作业HW9:LeetCode93 Restore IP Addresses
- 【leetcode】String——Restore IP Addresses (93)
- LeetCode: Restore IP Addresses
- Restore IP Addresses
- LeetCode : Restore IP Addresses
- [LeetCode] Restore IP Addresses
- Restore IP Addresses
- [LeetCode]Restore IP Addresses
- Restore IP Addresses
- 获取文件大小、字节转换
- 大厂热更新框架了解
- Linux字符设备驱动之poll机制
- NYOJ 267 郁闷的C小加(二)
- 在前端眼中pc端和移动的开发区别
- 算法系列——Restore IP Addresses
- 浏览器加载图片错误解决方案
- ftp命令学习总结
- pinpoint安装部署实践
- linux 中getcwd函数使用解析
- P78使用getline读取一整行
- tcp与udp
- Laravel 中 微信开发 csrf_token 验证问题
- display:none和visible:hidden的区别