[leetcode91]Restore IP Addresses(java)
来源:互联网 发布:安嘉和 知乎 编辑:程序博客网 时间:2024/06/06 09:31
问题描述:
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)
这个问题可以抽象成一棵树,根节点为空,每个节点下代表从当前位置向后一个、二个、三个字符(因为IP地址最大为3个字符)
并利用剪枝法,对不符合条件的不再继续。
很显然,若抽象成树,那需要使用DFS。当递归查询到最后一个部分(4)时,若满足条件,则将字符串添加到list中,如果不满足条件,简单的返回。
还有要注意,IP地址要有效的条件!
代码如下:
import java.util.ArrayList;public class ResoreIpAddr { private boolean isValid(String s){ int length = s.length(); if(length>=2&&s.charAt(0)=='0') return false; int nums = 0; for(int i = 0;i<length;i++) nums = nums*10+s.charAt(i)-'0'; if(nums>255) return false; return true; } private void dfs(String s,String tmp,ArrayList<String> list,int count){ if(count>=3){ if(isValid(s)) list.add(tmp+s); return; } String tmpString; for(int i = 1;i<4&&i<s.length();i++){ tmpString = s.substring(0, i); if(isValid(tmpString)){ dfs(s.substring(i), tmp+tmpString+'.', list, count+1); } } } public ArrayList<String> restoreIpAddresses(String s) { ArrayList<String> list = new ArrayList<String>(); if(s.length()<4||s.length()>12) return list; dfs(s, "", list, 0); return list; } public void test(){ ArrayList<String> list = restoreIpAddresses("2552551117"); int count = list.size(); for(int i = 0;i<count;i++){ System.out.println(list.get(i)); } }}
0 0
- [leetcode91]Restore IP Addresses(java)
- Restore IP Addresses Java
- Restore IP Addresses (Java)
- [Leetcode] Restore IP Addresses (Java)
- [JAVA]LeetCode93 Restore IP Addresses
- [LeetCode][Java] Restore IP Addresses
- leetcode:Restore IP Addresses 【Java】
- restore-ip-addresses Java code
- 【leetcode】93. Restore IP Addresses【java】
- 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
- Restore IP Addresses
- LeetCode:Restore IP Addresses
- Android环境搭建
- java基础巩固
- AVR下载烧写的复杂熔丝设置尿性
- 安卓相对布局
- java是要这样去学习的
- [leetcode91]Restore IP Addresses(java)
- 部分运算符只能用友元函数(全局函数)重载 以及链式法则
- 黑马程序员——Java基础--IO(二)
- AFNetworking 图片的本地缓存问题
- Shortest Prefixes(字典树)
- 新装Linux无法联网
- 关于Android知识的杂乱总结
- [转]_CRT_SECURE_NO_WARNINGS
- iOS开发-Xcode Debug、Release、Archive、Profile、Analyze概念解释