zoukankan      html  css  js  c++  java
  • [leedcode 43] Multiply Strings

    Straight forward idea. Just like the way we multiply numbers. Don't forget considering the carry and be careful. e.g.

      123*456,
    what we usually do is:
          123
    *    456
    -----------
          738
        615
    +492
    -----------
      56088
    thus, 123*456 = 56088.
    In the same way, the algorithm is:

    from end to start position, use a new array to store temproary digit.
    A*B
    (1)For each element B[i]
        Compute tmp = B[i]*A
        Add tmp to the previous result, note the start position. res = res"+"tmp
    (2)Return result.

    To be specific,
    (1) char2int,     int(char-'0');
    (2) int2char,     char(int+'0')
    (3) Don't forget the carry in each add or multiply operation.
    (4) Don't forget the carry after last operation. e.g.  82+33 = 115.
    (5) Be careful with the string order and the number order.

    public class Solution {
        public String multiply(String num1, String num2) {
            //用字符串模拟乘法,注意事项见上面分析。注意result的第0位是结果的个位
            
            int len1=num1.length();
            int len2=num2.length();
            int[] result=new int[len1+len2];
            int carry=0;
            int i=0;
            int j=0;
            for( i=0;i<len2;i++){
                int n2=num2.charAt(len2-1-i)-'0';
                carry=0;
                for(j=0;j<len1;j++){
                    result[i+j]+=n2*(num1.charAt(len1-1-j)-'0')+carry;
                    
                    carry=result[i+j]/10;
                    result[i+j]%=10;
                }
                result[i+j]=result[i+j]+carry;
            }
            i=len1+len2-1;
            while(i>0){
                if(result[i]!=0)
                    break;
                i--;
            }
            StringBuilder res=new StringBuilder();
            int k=i;
            while(k>=0){
                res.append((char)(result[k]+'0'));//res.append(result[k]+'0');会得整数,比如result[k]为0时,添加的是48
                k--;
            }
            
            return res.toString();
        }
    }
  • 相关阅读:
    思维导图github地址
    python操作mongodb根据_id查询数据的实现方法
    如何让nginx显示文件夹目录
    Scrapy爬虫返回302重定向问题解决方法
    K8s
    Dockerfile文件详解
    k8s简介
    mongodb存储过程
    存储过程详解
    Docker 镜像加速
  • 原文地址:https://www.cnblogs.com/qiaomu/p/4637615.html
Copyright © 2011-2022 走看看