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); } }