注意样例
- 1、当某个为0的时候,需要特判!!
- 2、注意,要先找到最高位!
- 3、逆向思维
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param s string字符串 第一个整数
* @param t string字符串 第二个整数
* @return string字符串
*/
string solve(string s, string t) {
// write code here
int one=s.size();
int two=t.size();
if( 1==one && '0'==s[0] )
{
return "0";
}
if( 1==two && '0'==t[0] )
{
return "0";
}
reverse( s.begin(), s.end() );
reverse( t.begin(), t.end() );
//表示进位
int carry=0;
//vector默认初始化为0
vector<int> res(one+two);
fill(res.begin(), res.begin()+one+two, 0);
for(int i=0; i<one; ++i)
{
for(int j=0; j<two ; ++j )
{
int first=s[i]-'0';
int second=t[j]-'0';
res[i+j]+=first*second;
carry=res[i+j]/10;
res[i+j]%=10;
int loop=i+j+1;
//可以进位的时候
while( carry )
{
res[loop]+=carry;
carry=res[loop]/10;
res[loop]%=10;
//MaxPos=max( MaxPos, loop );
++loop;
}
}
}
string result;
int pos=one+two-1;
while( 1 )
{
if(res[pos]>0 )
{
break;
}
else
{
--pos;
}
}
//MaxPos+=1;
do
{
result+=('0'+res[pos]);
--pos;
}while(pos>=0);
return result;
}
};