• [LeetCode] Multiply Strings 解题报告




    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.
    » Solve this problem

    [解题思路]
    大整数乘法,一位一位往上乘,注意进位的处理即可。此外,注意0的处理


    [Code]
    1:    string multiply(string num1, string num2) {  
    2: // Start typing your C/C++ solution below
    3: // DO NOT write int main() function
    4: if(num1.size() ==0 || num2.size() ==0) return 0;
    5: string res(num1.size()+num2.size()+1, '0');
    6: std::reverse(num1.begin(), num1.end());
    7: std::reverse(num2.begin(), num2.end());
    8: for(int i =0; i < num1.size(); i++)
    9: {
    10: int dig1 = num1[i] -'0';
    11: int carry = 0;
    12: for(int j = 0; j< num2.size(); j++)
    13: {
    14: int dig2 = num2[j] - '0';
    15: int exist = res[i+j] -'0';
    16: res[i+j] = (dig1*dig2+carry+ exist) % 10 +'0';
    17: carry = (dig1*dig2+carry+exist)/10;
    18: }
    19: if(carry >0)
    20: {
    21: res[i+num2.size()] = carry + '0';
    22: }
    23: }
    24: std::reverse(res.begin(), res.end());
    25: int start =0;
    26: while(res[start] =='0' && start < res.size())
    27: {
    28: start++;
    29: }
    30: if(start == res.size()) return "0";
    31: return res.substr(start, res.size()-start);
    32: }

    [Note]
    1. Line 25~31, 处理乘法过程中在起始处产生的0。 比如, “9133”, “0”,直接乘的结果是“000000”, 而期待结果是“0”

  • 相关阅读:
    [转]测试的基本概念
    记录
    flash 与 程序通讯
    怎么正确的建立项目
    安装包的制作
    JS
    页面刷新定位
    [转]C#处理XML
    MSN机器人
    报表 的使用
  • 原文地址:https://www.cnblogs.com/codingtmd/p/5078984.html
Copyright © 2020-2023  润新知