字符串相乘
Posted thewinter
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串相乘相关的知识,希望对你有一定的参考价值。
题目描述:
class Solution { public String multiply(String num1, String num2) { /* 问题的精华在于,乘积在数组中的位置,下标为i的被乘数,乘以下标为j的乘数,数字总是存在 下标i+j+1的位置上。123*456 中,2*5的结果存在数组的1+1+1 = 3即下标为3的位置。 */ int n1 = num1.length()-1; int n2 = num2.length()-1; if(n1 < 0 || n2 < 0) return ""; int[] mul = new int[n1+n2+2]; for(int i = n1;i>=0;i--){ for(int j = n2; j>=0;j--){ //算进位 mul[i+j] += ((num1.charAt(i)-‘0‘) * (num2.charAt(j)-‘0‘)+mul[i+j+1])/10; //本位置的值 mul[i+j+1] = ((num1.charAt(i)-‘0‘) * (num2.charAt(j)-‘0‘)+mul[i+j+1])%10; } } StringBuilder sb = new StringBuilder(); int i = 0; while(i < mul.length-1 && mul[i] == 0) i++; for(; i < mul.length; ++i) sb.append(mul[i]); return sb.toString(); } }
以上是关于字符串相乘的主要内容,如果未能解决你的问题,请参考以下文章