我正在尝试将给定的数字字符串分成较小的1位数字和2位数字。像这样的东西:Input : 1234 Output : (1,2,34) (1,23,4) (1,2,3,4) (12,34) (12,3,4)我一直在尝试使用回溯来解决问题,但未能获得理想的结果。我的尝试如下:import java.util.Arrays;import java.util.ArrayList;public class MyClass { private static void func(ArrayList<String> res, String digits, String s){ if(digits.length() <= 0){ res.add(s.substring(0, s.length()-1)); return; } String temp = digits; String prev_s = s; s = s + digits.charAt(0) + ","; // chosen one character func(res, digits.substring(1), s); prev_s = s; if(digits.length() >= 2){ s = s + digits.substring(0,2) + ","; // chosen two characters func(res, digits.substring(2), s); } s = prev_s; digits = temp; // unchoosing } public static void main(String args[]) { String digits = "1234"; ArrayList<String> res = new ArrayList<>(); String s = ""; func(res, digits, s); for(int i =0; i < res.size(); i++){ System.out.println(res.get(i)); } } }我得到的答案如下:1,2,3,41,2,3,341,2,23,41,12,3,41,12,3,34我在做什么错?我想我在创建子字符串时搞砸了。另外,不使用回溯功能就可以解决此问题吗?谢谢!
添加回答
举报
0/150
提交
取消