Leecode43 multiply-strings

题目描述

给出两个用字符串表示的数字,将两个数字的乘积作为字符串返回。
备注:数字可以无限大,且是非负数。

java 代码

public class Solution {
public String multiply(String num1, String num2) {
        if(num1 == null || num2 == null || num1.length()==0||num2.length() == 0){
            return "0";
        }
        int len1 = num1.length();
        int len2 = num2.length();
        int res [] = new int [len1+len2];
        for(int i = len1 - 1; i >= 0; i--){
            for(int j = len2 - 1; j >= 0;j--){
                int multi = (num1.charAt(i)-'0')*(num2.charAt(j)-'0');
                int low = i+j+1;
                int high = i+j;
                multi += res[low];
                int base = multi % 10;
                int carry = multi / 10;
                res[low] = base;
                res[high] += carry;
              }
        }
        StringBuffer sb = new StringBuffer();
        for(int i : res){
            // i != 0 时 可以放入  
            // i == 0 时 只要之前放入过其他元素就行 如 10是合法的
            //只有 0开头跳过
            if((sb.length() != 0)||(i != 0)){
                sb.append(i);
            }            
            /*
            没有sb放过元素,开头不能放入0
             if(!(sb.size() == 0)&&(i == 0)){                
            }            
            */
        }
        return sb.length() == 0 ? "0":sb.toString();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值