[LeetCode]415. 字符串相加、43. 字符串相乘

题目 415. 字符串相加

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

题解

维护一个temp表示当前两数相加+上一个进位的和。
每次更新结果的一位。
注意终止条件。
最后将结果串reverse()。

代码

class Solution {
    public String addStrings(String num1, String num2) {
        StringBuilder str = new StringBuilder();
        int temp =0;
        int i=num1.length()-1;
        int j=num2.length()-1;
        while(i>=0||j>=0||temp>0){
            int n1 = i>=0? num1.charAt(i--)-'0':0;
            int n2 = j>=0? num2.charAt(j--)-'0':0;
            temp +=n1+n2;
            str.append(temp%10);
            temp/=10;
        }

        return str.reverse().toString();
    }
}

题目 43. 字符串相乘

题解

代码

class Solution {
    public String multiply(String num1, String num2) {
        int len=num1.length()+num2.length();
        int[] res = new int[len];
        for(int i=num1.length()-1;i>=0;--i){
            for(int j = num2.length()-1;j>=0;--j){
                int tmp = (num1.charAt(i)-'0')*(num2.charAt(j)-'0')+res[i+j+1];//方便进位加入十位统一处理
                res[i+j+1]=tmp%10;
                res[i+j]+=tmp/10; //具体看竖试可理解
            }
        }

        StringBuilder product = new StringBuilder();
        int begPos = 0;
        while(res[begPos]==0&&begPos<len-1){
            begPos++;
        }
        for(int i=begPos;i<len;++i){
            product.append(res[i]);
        }
        return product.toString();
    }
}

posted on   coding_gaga  阅读(161)  评论(0编辑  收藏  举报

编辑推荐:
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
阅读排行:
· 2025成都.NET开发者Connect圆满结束
· 后端思维之高并发处理方案
· 千万级大表的优化技巧
· 在 VS Code 中,一键安装 MCP Server!
· 10年+ .NET Coder 心语 ── 继承的思维:从思维模式到架构设计的深度解析
历史上的今天:
2019-05-21 [程序员代码面试指南]第9章-在两个长度相等的排序数组中找到第k小的数(二分)
2019-05-21 [程序员代码面试指南]第9章-在两个长度相等的排序数组中找到上中位数(二分)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示