LeetCode 10.6 Restore IP Addresses

11 篇文章 0 订阅
6 篇文章 0 订阅

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++;

}

}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值