• 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.

    class Solution {
    private:
        void reverse(string& s)
        {
            int l=0;
            int r=s.length()-1;
            while(l<r)
            {
                char c=s[l];
                s[l]=s[r];
                s[r]=c;
                l++;
                r--;
            }
        }
        void add(string& s1,string s2)
        {        
            while(s1.length()<s2.length()) s1=s1+'0';
            while(s2.length()<s1.length()) s2=s2+'0';
            int add=0;
            for(int i=0;i<s1.length();i++)
            {
                int sum=add+s1[i]+s2[i]-'0'-'0';
                s1[i]=sum%10+'0';
                add=sum/10;
            }
            if(add>0) s1=s1+char(add+'0');
        }
        void mul(string& s,int n)
        {
            int add=0;
            for(int i=0;i<s.length();i++)
            {
                int sum=(s[i]-'0')*n+add;
                s[i]=sum%10+'0';
                add=sum/10;
            }
            if(add>0) s=s+char('0'+add);
        }
        void fix(string& s)
        {
            if(s.length()==0) s="0";        
            int index=s.length()-1;
            while(index>0 && s[index]=='0') index--;
            string result;
            for(int i=0;i<=index;i++)
                result=result+s[i];
            s=result;
        }
    public:
        string multiply(string num1, string num2) 
        {
            reverse(num1);
            reverse(num2);

            string result;
            string tens;
            for(int i=0;i<num2.length();i++)
            {
                string num=num1;
                mul(num,num2[i]-'0');
                num=tens+num;
                add(result,num);

                tens=tens+'0';
            }
            
            fix(result);reverse(result);
           return result;
        }
    }; 
  • 相关阅读:
    C# 使用布尔操作符
    C# 复合赋值操作符
    C# while语句
    C# do while语句
    datatabe 与string
    打开外部程序并
    group by 显示
    GROUP by 方法  C#
    屏幕取色
    C#简单继承示例详解——快速入门
  • 原文地址:https://www.cnblogs.com/erictanghu/p/3759357.html
Copyright © 2020-2023  润新知