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

给定两个以字符串形式表示的非负整数 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();
    }
}
复制代码

 

posted @   兴儿  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示