您的位置:首页 > 其它

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 
"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++; } }}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: