116_leetcode_Multiply Strings

来源:互联网 发布:速算计算器软件 编辑:程序博客网 时间:2024/06/07 01:43

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.

1:特殊情况;2:设置数组,字符串相乘,注意进位;3:注意某一位是0的情况;3:最后处理一下边界情况


    string multiply(string num1, string num2)    {        if(num1.length() == 0 || num2.length() == 0)        {            return "";        }                int size1 = (int)num1.length();        int size2 = (int)num2.length();                if(size1 == 1)        {            if(num1[0] == '0')            {                return "0";            }            else if(num1[0] == '1')            {                return num2;            }        }                if(size2 == 1)        {            if(num2[0] == '0')            {                return "0";            }            else if(num2[0] == '1')            {                return num1;            }        }                string result;        for(int i = 0; i < size1 + size2; i++)        {            result.push_back('0');        }                int count = 0;                for(int i = size1 - 1; i >= 0; i--)        {            if(num1[i] == '0')            {                continue;            }                        count = 0;            for(int j = size2 - 1; j >= 0; j--)            {                int value = (num1[i] - '0') * (num2[j] - '0' ) + count + result[i+j+1] - '0';                int temp = value % 10;                count = value / 10;                result[i+j+1] = temp + '0';                            }            result[i] = count + '0';        }                if(result[0] == '0')        {            int i;            for(i = 1; i < size1 + size2; i++)            {                result[i-1] = result[i];            }            result.pop_back();        }                        return result;    }


0 0