zoukankan      html  css  js  c++  java
  • [编程] 没有括号的算式 面试 算法 (四)

    import java.util.Scanner;
    
    public class Test {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            String next = scanner.next();
            System.out.println(test(next));
        }
        /**
         * 有一个写在黑板上的加减法算式,运算符只包含加号、减号和括号,但其中的括号被清洁工擦去了。现在需要你写一个算法计算这个算式括号被擦去之前的可能的最小结果值。
         * <p>
         * 输入:
         * 仅有一行,被擦去括号后的算式
         * <p>
         * 输入约束:
         * 算式最多有50个字符,且其中仅包含0-9和+、-
         * 算式的第一个字符一定是数字
         * 算式中不会连续出现两个运算符
         * 算式中每个整数最多有5位
         * <p>
         * 输出:
         * 一个整数:即括号被擦去之前,该算式可能的最小结果值
         * <p>
         * 举例1:
         * 输入:
         * 55-50+40
         * 输出:
         * -35
         * 解释:
         * 通过增加括号,该算式有两种可能的结果:55-50+40=45和55-(50+40)=-35
         * <p>
         * 举例2:
         * 输入:
         * 10+20+30+40
         * 输出:
         * 100
         * 解释:
         * 由于输入中没有减号,因此无论怎么加括号,结果也只能是100
         * <p>
         * 举例3:
         * 输入:
         * 00009-00009
         * 输出:
         * 0
         * 解释:注意算式中的整数可能有前导0.
         *
         * @param str
         * @return
         */
        static int test(String str) {
            String[] split = str.split("-");
            String retStr = "";
            for (int i = 0; i < split.length; i++) {
                if (split[i].indexOf("+") != -1) {
                    String[] sp2 = split[i].split("\+");
                    int s = Integer.parseInt(sp2[0]);
                    for (int c = 1; c < sp2.length; c++) s += Integer.parseInt(sp2[c]);
                    retStr += "-" + s;
                } else retStr += "-" + split[i];
            }
            if (retStr.substring(0, 1).equals("-")) retStr = retStr.substring(1);
            String[] split1 = retStr.split("-");
            int n = Integer.parseInt(split1[0]);
            for (int i = 1; i < split1.length; i++) n -= Integer.parseInt(split1[i]);
            return n;
        }
    }
    

      

  • 相关阅读:
    173. Binary Search Tree Iterator
    199. Binary Tree Right Side View
    230. Kth Smallest Element in a BST
    236. Lowest Common Ancestor of a Binary Tree
    337. House Robber III
    449. Serialize and Deserialize BST
    508. Most Frequent Subtree Sum
    513. Find Bottom Left Tree Value
    129. Sum Root to Leaf Numbers
    652. Find Duplicate Subtrees
  • 原文地址:https://www.cnblogs.com/412013cl/p/11768268.html
Copyright © 2011-2022 走看看