zoukankan      html  css  js  c++  java
  • 43. 字符串相乘-字符串-中等难度

    问题描述

    给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

    示例 1:

    输入: num1 = "2", num2 = "3"
    输出: "6"
    示例 2:

    输入: num1 = "123", num2 = "456"
    输出: "56088"
    说明:

    num1 和 num2 的长度小于110。
    num1 和 num2 只包含数字 0-9。
    num1 和 num2 均不以零开头,除非是数字 0 本身。
    不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/multiply-strings

    解答

    class Solution {
        //加到num1上 最后返回
        public void add(StringBuilder res, int temp2, int offset){
            int shiWei = ((int)temp2/10);
            int geWei = temp2%10;
            if(offset < res.length()){
                int ge = (int)(res.charAt(offset)-'0') + geWei;
                res.setCharAt(offset, (char)(ge%10+'0'));
                if(ge>=10)add(res, (int)(ge/10), offset+1);
            }else res.append(geWei);
            if(offset+1 < res.length()){
                int shi = (int)(res.charAt(offset+1)-'0') + shiWei;
                res.setCharAt(offset+1, (char)(shi%10+'0'));
                if(shi>=10)add(res, (int)(shi/10), offset+2);
            }else if(shiWei!=0)res.append(shiWei);
        }
        public String multiply(String num1, String num2) {
            StringBuilder res = new StringBuilder();
            int count=0;
            for(int i=num2.length()-1;i>=0;i--){
                int offset = count;
                int temp1 = (int)num2.charAt(i)-'0';
                for(int j=num1.length()-1;j>=0;j--){
                    int temp2 = (int)num1.charAt(j)-'0';
                    temp2 *= temp1;
                    add(res, temp2, offset);
                    offset++;
                }
                count++;
            }
            while(res.length()>1 && res.charAt(res.length()-1) == '0')res.deleteCharAt(res.length()-1);
            return res.reverse().toString();
        }
    }
  • 相关阅读:
    20210108 android学习
    20210106 android学习
    20210105 android学习
    20210104 android学习
    httpClient请求转发个人理解
    CefSharp如何判断页面是否加载完
    C#/WPF 使用的Task线程程序缺依旧响应缓慢问题
    修改LiveChart的提示显示位置
    Wpf双击放大缩小界面
    WPF设置无边框CefSharp显示不出来问题
  • 原文地址:https://www.cnblogs.com/xxxxxiaochuan/p/13340233.html
Copyright © 2011-2022 走看看