大数乘法

先转成数字数组。在进行相乘。 先处理成字符样式。 之后先处理0,再转成StringBuffer。

public String solve (String s, String t) {
        // write code here

        int m=s.length();
        int[] arr1=new int[m];
        for (int i=0;i<m;i++) arr1[i]=s.charAt(i)-'0';

        int n=t.length();
        int[] arr2=new int[n];
        for (int i=0;i<n;i++) arr2[i]=t.charAt(i)-'0';

        int[] nums=new int[m+n];
        for (int i=0;i<m;i++){
            for (int j=0;j<n;j++){
                nums[i+j+1]+=arr1[i]*arr2[j];
            }
        }

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

            int num=carry+nums[i];
            nums[i]=num%10;
            carry=num/10;

        }

        int cur=0;
        while (cur< nums.length&&nums[cur]==0) cur++;

        StringBuilder sr=new StringBuilder();
        for (int i=cur;i< nums.length;i++){
            sr.append(nums[i]);
        }
        
        return sr.length()==0?"0":sr.toString();
        
    }



全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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