题解 | #大数乘法#

大数乘法

https://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571

package test2;

/**
 * 描述
 * 以字符串的形式读入两个数字,
 * 编写一个函数计算它们的乘积,以字符串形式返回。
 */
public class BigCheng {
    public static void main(String[] args) {
        BigCheng bigCheng = new BigCheng();
        String solve = bigCheng.solve("111", "0");
        System.out.println(solve);
    }
    public String solve (String s, String t) {
        //1.判空
        if("0".equals(s) | "0".equals(t)) //不短路判断
            return "0";
        if(s.length()==0 | t.length()==0)
            return "0";
        //2.先进行乘法然后累加
        int res[] = new int[s.length()+t.length()];
        for (int i = s.length()-1; i >=0 ; i--) {
            for (int j = t.length()-1; j >=0 ; j--) {
                //res[i+j+1]是为了将相应的位置数据相加
                //即i+j =3  和res的最后一位下标差一个1
               res[i+j+1]=res[i+j+1]+( (s.charAt(i)-'0') *(t.charAt(j)-'0') );
            }
        }
       /* for (int re : res) {
            System.out.print(re+ " ");
        }*/
        //3.然后处理进位
        int up=0;
        StringBuffer buffer = new StringBuffer();
        for (int i = res.length-1; i >=0 ; i--) {
            int temp = res[i]+up;
            up = temp /10;
            buffer.append(temp%10);
        }
        String s1 = buffer.reverse().toString();
        //System.out.println(s1);
        //去掉前面的0
        if(s1.charAt(0)=='0'){
            return s1.substring(1);
        }else{
            return s1;
        }

    }
}

全部评论

相关推荐

11-28 17:58
门头沟学院 Java
美团 JAVA开发 n×15.5
牛客786276759号:百度现在晋升很难的 而且云这块的业务没美团好 你看百度股价都跌成啥样了
点赞 评论 收藏
分享
安静的垂耳兔在泡澡:ks已经第八次投递了,它起码挂了还让你再投,不错了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务