9 条回复
一个回溯就行了
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; public class Main { private static List<String> list = new ArrayList<>(); public static void main(String[] args) { Scanner in = new Scanner(System.in); String string = in.next(); backTrack(string, 0, new String[4], 0); for (String s : list) { System.out.println(s); } } public static void backTrack(String string, int index, String a[], int num) { if (num >= 4) { if (index == string.length()) { StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < 4; i++) { stringBuilder.append(a[i]); if (i != 3) { stringBuilder.append("."); } } list.add(stringBuilder.toString()); } } else { for (int i = index + 1; i <= string.length() && i <= index + 3; i++) { a[num] = string.substring(index, i); if (check(a[num], num)) { backTrack(string, i, a, num + 1); } } } } private static boolean check(String s, int num) { if (num == 0 && s.equals("0")) { return false; } if (s.length() > 1 && s.charAt(0) == '0') { return false; } return Integer.valueOf(s) <= 255; } }
添加回复