链接: link
class Solution {
public String multiply(String num1, String num2) {
//1.无进相乘后相加。2.处理进位
char[] s1 = new StringBuffer(num1).reverse().toString().toCharArray();
char[] s2 = new StringBuffer(num2).reverse().toString().toCharArray();
int n = s1.length;
int m = s2.length;
int[] tmp = new int[m+n-1];
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
tmp[i+j] += (s1[i]-'0') * (s2[j]-'0');
//相加
StringBuffer ret = new StringBuffer();
int cur = 0,t = 0;
while(cur < m+n-1 || t != 0){
if(cur < m+n-1) t += tmp[cur++];
ret.append((char)((char)t % 10 + '0'));
t /= 10;//进位
}
//2.处理前导0: (注意算出来是逆序的)
while(ret.length() > 1 && ret.charAt(ret.length() - 1) == '0'){
ret.deleteCharAt((ret.length()-1));
}
return ret.reverse().toString();
}
}
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有