首页 > 其他 > 详细

43. 字符串相乘

时间:2021-04-30 23:41:31      阅读:22      评论:0      收藏:0      [点我收藏+]
package leetcode;

public class demo_43 {
    public String multiply(String num1, String num2) {
        String s1="";
        String s="";
        if(num2.equals("0")||num1.equals("0")) {return s="0";}
        
        //记录当前记录的次数
        int n=0;
        for(int i=num2.length()-1;i>=0;i--) {
            s1=Singlemul(num1, num2.charAt(i));
            s=addnumber(s, s1,n);
            n=n+1;
        }
        //之前的操作都是从左往右运算,现在要翻转过来
        StringBuffer sb=new StringBuffer(s);
        sb.reverse();
        s=sb.toString();
        System.out.println(s);
        return s;
    }
    //一位数字乘以多位数
    public String Singlemul(String num,Character c) {
        String s="";
        int add=0;
        int mul;
        for(int i=num.length()-1;i>=0;i--) {
            mul=(Integer.valueOf(c)-48)*(Integer.valueOf(num.charAt(i))-48)+add;
            if(mul>=10) {
                add=mul/10;
            }
            else {
                add=0;
            }
            s=s+mul%10;
        }
        if(add!=0) {
            s=s+add;
        }
        return s;
    }
    
    //将两个多位数进行相加
    public String addnumber(String s1,String s2,int n) {
        String s="";
        int add=0;
        for(int i=0;i<n;i++) {
            s=s+s1.charAt(i);
        }
        int num;
        int i;
        int j;
        //当进行n次相加时,加数起始位置是在被加数的第n位
        for(i=n,j=0;i<s1.length()&&j<s2.length();i++,j++) {
            num=(Integer.valueOf(s1.charAt(i))-48)+(Integer.valueOf(s2.charAt(j))-48)+add;
            if(num>=10) {
                add=num/10;
            }
            else {
                add=0;
            }
            s=s+num%10;
        }
        for(;j<s2.length();j++) {
            num=(Integer.valueOf(s2.charAt(j))-48)+add;
            if(num>=10) {
                add=num/10;
            }
            else {
                add=0;
            }
            s=s+num%10;
        }
        if(add==1) {
            s=s+1;
        }
        return s;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        demo_43 d43 =new demo_43();
        d43.multiply("123", "456");
    }

}

 

43. 字符串相乘

原文:https://www.cnblogs.com/Yshun/p/14723491.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!