首页 > 其他分享 >leetCode43.字符串相乘

leetCode43.字符串相乘

时间:2025-01-04 13:17:01浏览次数:1  
标签:arr return num1 num2 int 字符串 相乘 leetCode43

题目:

给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。
注意:不能使用任何内置的BigInteger库或直接将输入转换为整数。

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

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

思路

  • 通过倒序,从个位逐步往前遍历 两个字符串,并进行计算
  • 遍历结果数组,计算进位。

代码:

        if (num1 == null) {
            return num2;
        }
        if (num2 == null) {
            return num1;
        }
        //两数相乘,其中一个为0,结果必定是0
        if (num1.equals("0") || num2.equals("0")) {
            return "0";
        }
        int m = num1.length();
        int n = num2.length();
        //存放结果的数组,长度设置为 m+n
        int[] arr = new int[m+n];

        //第一个字符串。倒序
        for (int i=m-1; i>=0; i--) {
            //通过字符减去 '0',可以得到数字
            int x = num1.charAt(i) - '0';
            for (int j = n-1; j>=0 ;j--) {
                //第二个字符串。倒序
                int y = num2.charAt(j) - '0';
                //字符串相乘
                arr[ i+j+1] += x* y;
            }
        }

        //遍历结果数组,计算进位
        for( int i= m+n-1; i>0; i--) {
            arr[i-1] += arr[i]/10;
            arr[i] %= 10;

        }

        //如果计算结果的第一位是0就忽略,直接从第二位开始算
        int index = arr[0]==0? 1:0;
        StringBuffer sb = new StringBuffer();
        while ( index< m+n) {
            //将计算结果拼接成字符串
            sb.append( arr[index]);
            index++;
        }

        return sb.toString();
    }

标签:arr,return,num1,num2,int,字符串,相乘,leetCode43
From: https://www.cnblogs.com/expiator/p/18651775

相关文章

  • 使用js写一个方法计算字符串的长度,英文算半个
    在前端开发中,如果你想要计算字符串的长度,并且希望英文字符算作半个长度,你可以使用JavaScript编写一个函数来实现这个功能。下面是一个示例函数,它遍历字符串中的每个字符,检查字符是否为英文字符(这里假设英文字符是指ASCII码在32到126之间的字符,包括空格),并据此计算长度:functioncal......
  • C++中的字符( char )、字符数组( char[] )、字符串( std::string )
    字符(char)定义:char是C++中的基本数据类型,用于表示单个字符。char在内存中通常占用一个字节(8位)。在ASCII编码系统中,每个字符都对应一个唯一的整数值,char类型可以存储这些值来表示相应的字符。charch='A';//存储字符'A'与其他类型的联系:字符本质上是一个小整数类......
  • windows C#-确定字符串是否表示数值
    若要确定字符串是否是指定数值类型的有效表示形式,请使用由所有基元数值类型以及如DateTime和IPAddress等类型实现的静态TryParse方法。以下示例演示如何确定“108”是否为有效的int。inti=0;strings="108";boolresult=int.TryParse(s,outi);//inow=......
  • C中如何进行字符串赋值和字符串转换?
    C语言中字符串赋值和字符串转换的详细说明字符串赋值在C语言中,字符串是以字符数组的形式存储的,并以空字符\0作为结束符。因此,字符串赋值不能直接使用=操作符,而是需要使用专门的函数进行复制。以下是几种常见的字符串赋值方法:「直接初始化」直接在声明字符数组时初始化字符......
  • java字符串拼接遇到null你会处理吗
    现有一个场景,对于发票信息,需要把信息中的地址和电话进行拼接,开户号和账号进行拼接,那应该怎么做?最简单的方法是使用+拼接,但问题是如果有个字段为空,是null,那么拼接结果是什么样的?来个下面的示例publicstaticvoidmain(String[]args){Stringa=null;String......
  • 字符串拼接方法`${}`和' '+' '用法
    原文链接:https://www.cnblogs.com/shimily/articles/18598713字符串拼接方法一:````两个点里面可以放任何内容,包括html,js代码,不限制格式,`${}`里面可以放变量。字符串拼接方法二''+''一般用来拼接字符串和变量,如果拼接html有格式限制,代码里面不能有空格换行letkssj=......
  • 字符串解码(栈)
    给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认......
  • Python字符串
    目录基本操作常用方法        Python中的字符串是一种常用的数据类型,用于存储和操作文本数据。字符串可以包含字母、数字、符号和空格等字符。以下是一些基本的字符串操作和特性:基本操作创建字符串在Python中,字符串可以用单引号'、双引号"或者三引号'''或"""......
  • 字符串操作
    python对于字符串能做的事情很多,比如从字符串中提取部分字符串,添加或者删除空白字符,将小写字母转换成大写,检查字符串格式是否正确,甚至你可以编写python代码访问粘贴板,复制或者粘贴。1.字符串的拼接字符串的拼接可以使用加号,也可以使用join函数,join函数的参数是一个可迭代对象,比......
  • leetcode热题100(394. 字符串解码)c++
    链接:394.字符串解码给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格......