import java.util.*;
public class Solution {
/**
* dssdgs
* @param s string字符串
* @return string字符串ArrayList
*/
public ArrayList<String> restoreIpAddresses(String s) {
// write code here
ArrayList<String> list = new ArrayList<String>();
if (s.length() < 4) {
return list;
}
char[] chs = s.toCharArray();
sadd(list, chs, "", 0, 1);
return list;
}
//总共三个小数点,也就是四层cengshu
public void sadd(ArrayList<String> list, char[] chs, String s, int i,
int cengshu) {
if (cengshu >= 5) {
if (i == chs.length) {
list.add(s.substring(0, s.length() - 1));
}
return;
}
if(i >= chs.length){
return;
}
cengshu++;
//有0时
if (chs[i] == '0') {
s = s + "0.";
i++;
sadd(list, chs, s, i, cengshu);
return;
}
//截取一位数
String s1 = s + chs[i] + ".";
i++;
sadd(list, chs, s1, i, cengshu);
if (i >= chs.length) {
return;
}
//二位数
String s2 = s + chs[i - 1] + chs[i] + ".";
i++;
sadd(list, chs, s2, i, cengshu);
if (i >= chs.length) {
return;
}
//三位数
String s3 = s + chs[i - 2] + chs[i - 1] + chs[i] + ".";
if (chs[i - 2] > '2'
|| chs[i - 2] == '2' && chs[i - 1] > '5'
|| chs[i - 2] == '2' && chs[i - 1] == '5' && chs[i] > '5') {
return;
}
i++;
sadd(list, chs, s3, i, cengshu);
}
}