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;
        }
    };
  • 相关阅读:
    个人作业-Alpha项目测试
    第三次作业-结对编程
    第二次作业
    第一次阅读作业
    canal同步mysql数据至es5.5.0
    工作一周年小结
    Java集合操作 遍历list并转map
    网易秋招校招编程题
    堆外内存总结
    网易秋招内推编程题题解
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4930350.html
Copyright © 2011-2022 走看看