zoukankan      html  css  js  c++  java
  • 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;
        }
    }; 
  • 相关阅读:
    java pojo类
    web(一)
    java通过配置文件(Properties类)连接Oracle数据库代码示例
    java数组排序(插入排序、冒泡排序、选择排序)与递归 代码示例
    匿名内部类
    java反射机制
    ubuntu安装kvm流程
    squid代理服务问答
    ftp nfs samba比较
    Samba服务问答
  • 原文地址:https://www.cnblogs.com/erictanghu/p/3759357.html
Copyright © 2011-2022 走看看