class="java"> package test; public class Test { /** *其效率比常规算法效率缩短1/3 *其为一种简单实现,必然存在更优算法 *算法实现来自一道编程题: *已知abc+cba=1333,其中a,b,c均为一位数。 *编程求出满足条件的a,b,c的所有组合。 */ public static void main(String[] args) { //用户输入的一个数 int num = 122531; //统计有几种方案 int count = 0; //通过算法定义循环从哪个数开始 final int start = start(num); //通过算法定义循环从哪个数结束 final int end = end(num); //打印出符合条件的结果 for (int i = start; i <= end; i++) { if((i+result(i))==num){ count++; System.out.println(i+"+"+result(i)+"="+num); } } System.out.println("共有"+count+"种方案"); } public static int start(int num){ int x = num/3; int l = String.valueOf(x).length(); int value = 1; for (int i = 1; i < l; i++) { value = 10*value; } return x-value; } public static int end(int num){ int x = num/3; int l = String.valueOf(x).length(); int value = 1; for (int i = 1; i <= l; i++) { value = 10*value; } return value-1; } public static int result(int x){ StringBuilder sb = new StringBuilder(); for (int i = 0; i < String.valueOf(x).length(); i++) { sb.append(String.valueOf(x).charAt(i)); } int y = Integer.parseInt(sb.reverse().toString()); return y; } }