import java.util.*; public class Solution { private List<List<String>> ipList = new ArrayList<>(); /** * * @param s string字符串 * @return string字符串ArrayList */ public ArrayList<String> restoreIpAddresses (String s) { // write code here if (s == null || s.length() < 1) { return new ArrayList<>(); } dfs(s, 0, new ArrayList<>()); ArrayList<String> res = new ArrayList<>(); for (List<String> list : ipList) { res.add(list2Ip(list)); } return res; } private void dfs(String str, int start, List<String> list) { int n = str.length(); if (start == n && list.size() == 4) { ipList.add(new ArrayList<>(list)); return; } for (int i = start; i < n; i++) { if (i - start >= 1 && str.charAt(start) == '0') { break; } if (Integer.parseInt(str.substring(start, i + 1)) > 255) { break; } list.add(str.substring(start, i + 1)); dfs(str, i + 1, list); list.remove(list.size() - 1); } } private String list2Ip(List<String> list) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < 3; i++) { sb.append(list.get(i)).append("."); } sb.append(list.get(3)); return sb.toString(); } }