Multiply Strings leetcode

Multiply Strings

本题需要注意char型超过10的时候不为10,因此可以先转化为int型运算,运算原理同乘法相同

AC代码:

class Solution {
public:
    string reverse(string s){
        for(int i=0;i<s.size()/2;i++){
            int temp=s[i];
            s[i]=s[s.size()-i-1];
            s[s.size()-i-1]=temp;
        }
        return s;
    }
    string multiply(string num1, string num2) {
        int m=num1.size(),n=num2.size();
        string res;int *s=new int[m+n];
        for(int i=0;i<m+n;i++)
            s[i]=0;
        num1=reverse(num1);num2=reverse(num2);
        for(int i=0;i<m;i++)
          for(int j=0;j<n;j++){
              int a=(num1[i]-'0')*(num2[j]-'0');
             //char超过10的时候不为10
             s[i+j+1]+=(s[i+j]+a)/10;
             s[i+j]=(s[i+j]+a)%10;
        }
        int i=m+n-1;
        while(i>0&&s[i]==0){i--;}
        for(int j=i;j>=0;j--)
          res+=s[j]+'0';
        return res;
    }
};


猜你喜欢

转载自blog.csdn.net/maryhaocoolcool/article/details/52014208
今日推荐