image.png解决这个问题时,“计算算式的方法”会影响实现方法。如果要实
    现的是计算器,那么通常会用到逆波兰表示法 A,而本题则是使用编程语
    言内置的功能来实现更为简单。
    很多脚本语言都提供了类似 eval 这 样 的 标 准 函 数

    1. public static <T> String reverse(T num){
    2. StringBuilder stringBuilder = new StringBuilder();
    3. stringBuilder.append(num);
    4. return stringBuilder.reverse().toString();
    5. }
    6. @Test
    7. public void test2() throws ScriptException {
    8. ScriptEngineManager manager = new ScriptEngineManager();
    9. ScriptEngine engine = manager.getEngineByName("js");
    10. String[] op = new String[]{"*","-","/","+",""};
    11. for (int i = 1000; i < 10000; i++) {
    12. String num = String.valueOf(i);
    13. int reverse = Integer.parseInt(reverse(num));
    14. for (int j = 0; j < op.length; j++) {
    15. for (int k = 0; k < op.length; k++) {
    16. for (int l = 0; l < op.length; l++) {
    17. String value = num.charAt(0)+op[j]+num.charAt(1)+op[k]+ num.charAt(2)+op[l]+num.charAt(3);
    18. Integer eval = (Integer)engine.eval(value);
    19. if (reverse == eval) {
    20. System.out.println(num);
    21. }
    22. }
    23. }
    24. }
    25. }
    26. }