LeetCode 10.6 Restore IP Addresses
2016-04-26 15:04
423 查看
Given a string containing only digits, restore it by returning all possible valid IP address combinations.
For example:
Given
return
import java.util.Stack;
public class T2 {
public static void main(String[] args) {
T2 t = new T2(4, "25525511135"); t.DFS(0); t.print(); }
T2(int _n, String st) { n = _n; str = st; f = new int[n]; }
String str; int n; Stack<int[]> ans = new Stack<>(); int[] f;
void DFS(int k) { if (k == n) { if (chack(n)) { if(f[k-1]==str.length()){ int[] ss = new int[n]; for (int i = 0; i < n; i++) { ss[i] = f[i]; } ans.push(ss); } } } else { for (int i = k == 0 ? 1 : f[k - 1] + 1; i <= str.length(); i++) { f[k] = i; if (chack(k)) DFS(k + 1); } } }
boolean chack(int l) { int start = 0;
for (int i = 0; i < l; i++) { String s = str.substring(start, f[i]); if (s.isEmpty()) return false; if (f[i] - start > 3) return false; if (Integer.parseInt(s) > 255 || Integer.parseInt(s) < 1) return false; start = f[i]; } return true; }
void print() { int num = 1; while (!ans.isEmpty()) { System.out.println("======" + num + "=====");
int[] a = ans.pop(); int start = 0; for (int i = 0; i < a.length - 1; i++) { String s = str.substring(start, a[i]); System.out.print(s + "."); start = a[i]; } String s = str.substring(start, a[a.length - 1]); System.out.println(s);
num++; } }}
For example:
Given
"25525511135",
return
["255.255.11.135", "255.255.111.35"]. (Order does not matter)
import java.util.Stack;
public class T2 {
public static void main(String[] args) {
T2 t = new T2(4, "25525511135"); t.DFS(0); t.print(); }
T2(int _n, String st) { n = _n; str = st; f = new int[n]; }
String str; int n; Stack<int[]> ans = new Stack<>(); int[] f;
void DFS(int k) { if (k == n) { if (chack(n)) { if(f[k-1]==str.length()){ int[] ss = new int[n]; for (int i = 0; i < n; i++) { ss[i] = f[i]; } ans.push(ss); } } } else { for (int i = k == 0 ? 1 : f[k - 1] + 1; i <= str.length(); i++) { f[k] = i; if (chack(k)) DFS(k + 1); } } }
boolean chack(int l) { int start = 0;
for (int i = 0; i < l; i++) { String s = str.substring(start, f[i]); if (s.isEmpty()) return false; if (f[i] - start > 3) return false; if (Integer.parseInt(s) > 255 || Integer.parseInt(s) < 1) return false; start = f[i]; } return true; }
void print() { int num = 1; while (!ans.isEmpty()) { System.out.println("======" + num + "=====");
int[] a = ans.pop(); int start = 0; for (int i = 0; i < a.length - 1; i++) { String s = str.substring(start, a[i]); System.out.print(s + "."); start = a[i]; } String s = str.substring(start, a[a.length - 1]); System.out.println(s);
num++; } }}
相关文章推荐
- Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForUmengDebug'. > com.androi
- CRichEditCtrl使用大全
- 使用PHP导入和导出CSV文件
- Linux 回收用户空间资源
- C/C++复习:分数减法(结构体)
- cocos2dx3.2 某些UI白屏或使用ClippingNode造成部分手机白屏
- 笔记二:计数排序、选择排序、冒泡排序、插入排序
- 第5周 经典小游戏程序 打飞机
- inf文件的编写
- UVA_11292_Dragon of Loowater
- SQL Server 2008怎么自动备份数据库
- 【并发编程】活跃性问题
- Marvell网卡win10下无法联网的解决方法
- android 自定义view
- In-App Purchase iap 内付费 二次验证代码 (java 服务器端)
- 2016年4月20
- DAY6:leetcode #13 Roman to Integer
- 第89讲:Spark Streaming on Kafka解析和安装实战
- JavaScript代码性能优化总结
- run and start