zoukankan      html  css  js  c++  java
  • 43. Multiply Strings (String)

    Given two numbers represented as strings, return multiplication of the numbers as a string.

    Note: The numbers can be arbitrarily large and are non-negative.

    思路:首先确定结果的位数,难点在于知道结果中的每一位,是乘数中的哪两位相乘贡献的:是num2中的i-len1+1到i中的数分别乘以num1中的i-j相加而得的,并且要注意不能超过num2的界限[0,len2-1]

    class Solution {
    public:
        string multiply(string num1, string num2) {
            reverse(num1.begin(), num1.end());
            reverse(num2.begin(), num2.end());
            int carry = 0, sum =0;
            string result="";
            int len1 = num1.length();
            int len2 = num2.length();
            int resLen = len1+len2-1;
            
            for(int i = 0; i < resLen; i++){ //traverse the result digit
                for(int j = max(0,i-len1+1) ; j <= min(i,len2-1); j++){ //traverse the num2 digit
                    sum += (num2[j]-'0')*(num1[i-j]-'0');
                }
                sum += carry;
                carry = sum/10;
                result += ((sum%10) + '0');
                sum=0;a
            }
            
            if(carry) result += (carry+'0');
            reverse(result.begin(),result.end());
            if(result[0]=='0') return "0"; //全0的情况
            return result;
        }
    };
  • 相关阅读:
    学习mongodb简单安装、连接数据库、增删改查
    第三方模块glup学习
    npm 借助第三方模块nrm切换淘宝源
    nodemon 学习
    bootstrap和ie浏览器兼容性问题怎么解决?
    所得税
    债务重组
    非货币性资产交换
    政府补助
    收入 费用 和利润
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4930350.html
Copyright © 2011-2022 走看看