题解 | #大数乘法#

大数乘法

https://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571

package test;

public class BigCheng4 {

public static void main(String[] args) {

BigCheng4 bigCheng4 = new BigCheng4();

String solve = bigCheng4.solve("12", "999");//96726

System.out.println(solve);

}

public String solve(String s, String t) {

//1.判断空

if(s.length()==0 || t.length()==0)

return "0";

if("0".equals(s)||"0".equals(t))

return "0";

//用于存最后结果的整型数组

int res[]=new int[s.length()+t.length()];

//2.处理乘法和累加计算

for (int i = s.length()-1; i >=0 ; i--) {

for (int j = t.length()-1; j >=0 ; j--) {

res[i+j+1] = res[i+j+1]+

(s.charAt(i)-'0')*(t.charAt(j)-'0');

}

}

/**

* 测试数组累加结果

* for (int re : res) {

* System.out.print(re+ " ");

* }

*/

//3.处理最后的进位

int carry=0;

StringBuffer buffer = new StringBuffer();

for (int i = res.length-1; i >=0 ; i--) {

//先加数

int curRes = res[i]+carry;

buffer.append(curRes % 10);//将个位数串起来

carry=curRes/10;

}

String s1 = buffer.reverse().toString();

//System.out.println(s1);,

//去掉多于的前面的0

if(s1.charAt(0)=='0'){

return s1.substring(1);

}else{

return s1;

}

}

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务