首页 > 编程语言 >letcode算法--17.字符串相乘

letcode算法--17.字符串相乘

时间:2022-09-21 21:45:26浏览次数:61  
标签:num1 num2 -- int add 17 ans letcode String

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

注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。

示例 1:

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

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/multiply-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
    public String multiply(String num1, String num2) {
        if (num2.equals("0") || num1.equals("0")){
            return "0";
        }
        String ans = "0";
        int m = num1.length(),n = num2.length();
        for (int i = n - 1; i >= 0; i --){
            StringBuffer curr = new StringBuffer();
            int add = 0;
            for (int j = n - 1; j > i; j --){
                curr.append(0);
            }
            int y = num2.charAt(i) - '0';
            for (int j = m - 1; j >= 0; j--){
                int  x = num1.charAt(j) - '0';
                int product = x * y + add;
                curr.append(product%10);
                add = product/10;
            }
            if (add != 0){
                curr.append(add%10);
            }
            ans = addString(ans,curr.reverse().toString());
        }
        return ans;
    }

    public String addString(String num1,String num2){
        int i = num1.length()-1;
        int j = num2.length()-1;
        int add = 0;
        StringBuffer ans = new StringBuffer();
        while(i >= 0 || j >= 0 || add != 0){
            int x = i >= 0 ? num1.charAt(i) - '0' : 0;
            int y = j >= 0 ? num2.charAt(j) - '0' : 0;
            int result = x + y + add;
            ans.append(result % 10);
            add = result / 10;
            i --;
            j --;
        }
        ans.reverse();
        return ans.toString();
    }
}

 

标签:num1,num2,--,int,add,17,ans,letcode,String
From: https://www.cnblogs.com/xinger123/p/16717226.html

相关文章

  • Git将本地仓库上传到github
    这里采用简单的描述,提供两种方式:一、连接本地文件夹和远程仓库1.使用pull——拉取github项目文件(1)进入到自己要上传的文件夹内部,然后gitbashhere(2)输入命令gitini......
  • [20220909]bbed关于删除记录恢复的问题.txt
    [20220909]bbed关于删除记录恢复的问题.txt--//快下班被别人问的关于删除记录使用bbed恢复的问题,我开始以为很快讲解完,删除记录oracle仅仅打上一个标识,实际的记录还存在......
  • javaScript 字符串方法,字符串搜索,
     //这是字符串 能够使用单引号或双引号    varmko='helloworedw'    varqwe="hello worasd"    //new 一个字符串   ......
  • 博弈论-acwing893.集合-Nim游戏
    补充知识有向图游戏给定一个有向无环图,图中有一个唯一的起点,在起点上放有一枚棋子。两名玩家交替地把这枚棋子沿着有向边方向移动,每次可以移动一步,无法移动者判负。该游......
  • day1 python学习前言
    ......
  • vue学习笔记(二):vue目录结构,及vue组件和用法
    一、目录结构: 二、vue组件:  项目目录中的app.vue是一个顶级组件,可以删除里面的代码,然后来重新写:  注意:<template>标签下面只能有一个根元素,也就是说下面的写......
  • Android Studio 中 Gradle 版本升级导致 ndk 报错
    Errorwhileexecutingprocess..\android-ndk-r16-beta1\ndk-build.cmdwitharguments{NDK_PROJECT_PATH=null ....Noruletomaketarget.. AndroidStudioA......
  • for 循环学习笔记
              定义遍历是指通过某种顺序对一个数据结构中的所有元素进行访问。隐喻遍历就像点名,需要有顺序地对所有成员进行一次“查询”。  ......
  • 图像处理学习笔记-02-数字图像基础
    第一节简述人类视觉系统的一些重要方面,包括人眼中图像的生成及人眼适应和辨认灰度的一些能力,第二节讨论光、电磁波谱的其他分量及他们的成像特点,第三节讨论成像传感器及如......
  • 【转】Windows安装运行Kafka
    在Windows安装运行Kafka原文地址:https://www.cnblogs.com/flower1990/p/7466882.html一、安装JAVAJDK1、下载安装包http://www.oracle.com/technetwork/java/javase......