美文网首页
算法练习(一):计算两个大数的差

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

作者: codeMover | 来源:发表于2020-04-21 18:06 被阅读0次

计算两个大数的差

  • 条件:
    1. num1>=num2
    2. num2>=0
  • 思路:在不使用Java自带的BigInteger情况下,可以通过byte数组的形式来完成计算。把数值小和数据大的位数设置一样,通过补0方式。在这巧妙通过'0'=48,使用getBytes()完成最初的数据构成。采用按位减的形式,如果被减数小于减数,则让减数的前一位+1.
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();
    }
}

相关文章

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

    计算两个大数的差 条件:num1>=num2num2>=0 思路:在不使用Java自带的BigInteger情况下...

  • 2019-03-24

    今天写下来,关于筛子算法,计算素数,针对大数的判断。简单写一下算法,假设计算40000以内的素数。 筛子算法, 百...

  • Android_增量更新(BSDiff)

    Android中的增量更新指的是利用差分算法,计算两个App版本的差异,生成差分包,只需要下载差分包,不需要下载整...

  • 大数据算法之BitMap

    大数据算法:在给定的资源约束下,以大数据为输入,在给定时间约束内可以计算出给定问题加过的算法 所谓的大数据算法,个...

  • 概率与计算

    本文首发在我的博客:《概率与计算》 这是一个挖坑贴,随机算法是大数据算法中的重要的算法,《概率与计算》是讲随机算法...

  • 大数相乘之Karatsuba算法

    问题大数相乘 计算123×456,其实12345和6789就是大数。 思路 这是分治算法思想的典型体现。计算机只会...

  • RSA算法原理

    RSA算法的安全基于:大数(两个大质数的乘积)的质因分解目前做不到(以后量子计算机出现了,就可以办到,RSA算法也...

  • 大数相乘算法

    1、计算两个大数相乘的结果。2、算法流程:(1)大数可能超出任何一种整数类型,会引发溢出问题,所以用字符串的格式存...

  • 计算数组中第n大的数

    简单实现方法 计算数组中最大的数 计算数组中第二大数 计算数组中第n大数 算法实现 快速排序

  • Laxcus大数据分布计算演示实例

    Laxcus大数据管理系统提供了基于Diffuse/Converge分布算法的计算能力。算法的具体介绍详见《Lax...

网友评论

      本文标题:算法练习(一):计算两个大数的差

      本文链接:https://www.haomeiwen.com/subject/ojypihtx.html