解决这个问题时,“计算算式的方法”会影响实现方法。如果要实
现的是计算器,那么通常会用到逆波兰表示法 A,而本题则是使用编程语
言内置的功能来实现更为简单。
很多脚本语言都提供了类似 eval 这 样 的 标 准 函 数
public static <T> String reverse(T num){StringBuilder stringBuilder = new StringBuilder();stringBuilder.append(num);return stringBuilder.reverse().toString();}@Testpublic void test2() throws ScriptException {ScriptEngineManager manager = new ScriptEngineManager();ScriptEngine engine = manager.getEngineByName("js");String[] op = new String[]{"*","-","/","+",""};for (int i = 1000; i < 10000; i++) {String num = String.valueOf(i);int reverse = Integer.parseInt(reverse(num));for (int j = 0; j < op.length; j++) {for (int k = 0; k < op.length; k++) {for (int l = 0; l < op.length; l++) {String value = num.charAt(0)+op[j]+num.charAt(1)+op[k]+ num.charAt(2)+op[l]+num.charAt(3);Integer eval = (Integer)engine.eval(value);if (reverse == eval) {System.out.println(num);}}}}}}
