93. Restore IP Addresses 发表于 2022-01-31 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051class Solution { public List<String> restoreIpAddresses(String s) { List<String> ipList = new ArrayList<>(); List<Integer> numList = new ArrayList<>(4); backtrack(ipList, numList, s, 0); return ipList; } private void backtrack(List<String> ipList, List<Integer> numList, String s, int startIndex) { if (startIndex == s.length()) { if (numList.size() == 4) { StringBuilder sb = new StringBuilder(); sb.append(numList.get(0)).append("."); sb.append(numList.get(1)).append("."); sb.append(numList.get(2)).append("."); sb.append(numList.get(3)); ipList.add(sb.toString()); } return; } char c = s.charAt(startIndex); if (c == '0') { numList.add(0); backtrack(ipList, numList, s, startIndex + 1); numList.remove(numList.size() - 1); } else { int num = c - '0'; numList.add(num); backtrack(ipList, numList, s, startIndex + 1); numList.remove(numList.size() - 1); if (startIndex + 1 < s.length()) { num = num * 10 + (s.charAt(startIndex + 1) - '0'); numList.add(num); backtrack(ipList, numList, s, startIndex + 2); numList.remove(numList.size() - 1); } if (startIndex + 2 < s.length()) { num = num * 10 + (s.charAt(startIndex + 2) - '0'); if (num <= 255) { numList.add(num); backtrack(ipList, numList, s, startIndex + 3); numList.remove(numList.size() - 1); } } } }} Reference93. Restore IP Addresses