算法练习(一):计算两个大数的差

2020-04-21  本文已影响0人  codeMover

计算两个大数的差

public class RepalceBigInteger {

    public static void main(String[] args) {
        String solution = solution("100-21");
        System.out.println(solution);
    }


    private static String solution(String line) {
        String[] nums = line.split("-");
        byte[] before = nums[0].getBytes();
        byte[] after = nums[1].getBytes();
        byte[] temp = new byte[before.length];
        int offset = before.length - after.length;
        int[] result = new int[before.length];
        for (int i = 0; i < temp.length; i++) {
            if (i < offset) {
                temp[i] = '0';
            } else {
                temp[i] = after[i - offset];
            }
        }
        for (int i = before.length - 1; i >= 0; i--) {
            int beforeNum = before[i];
            int afterNum = temp[i];
            if (beforeNum >= afterNum) {
                result[i] = beforeNum - afterNum;
            } else {
                int n = temp[i - 1];
                temp[i - 1] = (byte) (n + 1);
                result[i] = 10 + beforeNum - afterNum;
            }
        }
        StringBuffer sbf = new StringBuffer();
        for (int i = 0; i < result.length; i++) {
            sbf.append(result[i]);
        }
        return sbf.toString();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读