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();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,464评论 0 5
  • 1.二维数组的查找 题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一...
    少年梦游计_3403阅读 1,181评论 0 1
  • 本章内容 语法 数据类型 流控制语句 理解函数 3.1 语法 3.1.1 区分大小写 区分大小写 3.1.2 标识...
    闷油瓶小张阅读 736评论 0 0
  • 这是一个故事,后来成了事故。 他是我的一个同学,像我们一样是一个再平凡不过的在校大学生。在处处是宏伟建筑宽阔马路充...
    黎尚荣阅读 193评论 0 1