Leetcode_43_Multiply Strings

思路同小学竖式计算的过程,有两种处理方式。

class Solution {
public:
    string multiply(string num1, string num2) {
                if (num1=="" || num2=="")
			return "";
		if (num1=="0" || num2=="0")
			return "0";
		int len1=num1.size(),len2=num2.size();
		string ans(len1+len2,'0');
		for (int i=len2-1;i>=0;i--)
		{
			int carry1=0,carry2=0;
			for(int j=len1-1;j>=0;j--)
			{
				int tmp1=(num1[j]-'0')*(num2[i]-'0')+carry1;
				carry1=tmp1/10;
				tmp1=tmp1%10;
				int tmp2=ans[i+j+1]-'0'+tmp1+carry2;
				carry2=tmp2/10;
				ans[i+j+1]=tmp2%10+'0';
			}
			ans[i]+=carry1+carry2;
		}
		if(ans[0]=='0')
			ans=ans.substr(1,len1+len2);
		return ans;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_36863465/article/details/85041646
今日推荐