【字节面试手撕】大数加法

求解代码

java 复制代码
public String solve(String s, String t) {
    // 如果第一个字符串为空/长度为0,直接返回第二个字符串
    if(s.length()<=0){
        return t;
    }
    // 如果第二个字符串为空/长度为0,直接返回第一个字符串
    if(t.length()<=0){
        return s;
    }

    int i = s.length()-1;

    int j = t.length()-1;
    // 定义进位变量tmp
    int tmp = 0;
    // 定义StringBuilder拼接结果
    StringBuilder sb = new StringBuilder();

    // 需要注意:最后一位相加仍有进位时,需把进位1也拼接到结果
    while (i>=0||j>=0||tmp!=0) {

        tmp += i>=0?s.charAt(i--)-'0':0;

        tmp += j>=0?t.charAt(j--)-'0':0;
        
        // 取余10:得到当前位的计算结果
        sb.append(tmp%10);
        // 除以10:更新进位值
        tmp=tmp/10;
    }
    // 结果逆序:因为是从个位开始拼接,需要反转回正序,再转字符串返回
    return sb.reverse().toString();
}
相关推荐
不正经学生几秒前
C语言字符串函数进阶:安全版函数 + 错误处理 + 子串查找
c语言·开发语言·c++·算法·面试
ITKEY_12 分钟前
neovim基于nvim-jdtls 开发java报错
java·开发语言
leon8713 分钟前
MyBatis-Plus与AOP实现动态数据权限过滤的实践与踩坑记录
java
电气研究所14 分钟前
Java + Redis 实现工业设备告警去抖,避免变频器故障重复推送
java·前端
無限進步D14 分钟前
Java 代码块
java·开发语言
三克的油17 分钟前
算法基础-1
数据结构·c++·算法
用户31268748772019 分钟前
@Async 加了没生效?Spring Boot 异步编程全链路拆解:从线程池到自调用陷阱
java·spring boot
oort12319 分钟前
OortCodex 是奥尔特云 OortCloudSmart 推出的国产化工程化 AI 编码 Agent(奥尔特云编码智能体)
大数据·人工智能·算法
TheBestRucy19 分钟前
基于Dify的旅游攻略&王者荣耀攻略智能助手项目
服务器·开发语言·人工智能·python·算法·旅游
你想知道什么?23 分钟前
朴素贝叶斯算法-学习笔记
笔记·学习·算法