Multiply Strings
Given two numbers represented as strings, return multiplication of the numbers as a string.
Note: The numbers can be arbitrarily large and are non-negative.
思路: 用加法模拟乘法运算
注意事项:输出结果高位为0要舍去,如果只有一个0,要保留
JAVA代码:
- public String multiply(String num1, String num2) {
- ArrayList<Integer> res = new ArrayList<Integer>();
- int nlen1 = num1.length();
- int nlen2 = num2.length();
- for(int i=0;i<=nlen1+nlen2-2;i++) {
- res.add(0);
- }
- for(int i=0;i<nlen1;i++) {
- for(int j=0;j<nlen2;j++) {
- res.set(i+j,res.get(i+j) + (num1.charAt(i) - '0') * (num2.charAt(j) - '0')); // 要用set方法设置
- }
- }
- int cnt=0;
- StringBuffer result = new StringBuffer();
- for(int i=res.size()-1;i>=0 || cnt!=0;i--) {
- int cur = 0;
- if(i>=0) {
- res.set(i,res.get(i) + cnt);
- if(res.get(i) >= 10) { // >=10
- cnt = res.get(i)/10;
- res.set(i,res.get(i)%10);
- } else {
- cnt = 0; // 要控制好进位
- }
- cur = res.get(i);
- } else {
- cur = cnt;
- if(cur>=10) {
- cnt = cur/10;
- cur = cur%10;
- } else {
- cnt = 0;
- }
- }
- result.append(cur);
- }
- StringBuffer result2 = result.reverse();
- int i=0; //声明的控制
- for(i=0;i<result2.length();i++) { //对结果的处理,高位0的消除
- if(result2.charAt(i)!='0') break;
- }
- if(i==result2.length()) return "0"; //保留一个
- return result2.substring(i).toString();
- }

浙公网安备 33010602011771号