1.题目
https://leetcode.cn/problems/add-strings/
2.解法
思路
使用双指针从后往前遍历两个字符串,同时用一个变量 carry 来记录进位。每次计算两个字符的和,加上 carry ,然后将结果的个位数放入一个 StringBuilder 中,将结果的十位数作为新的 carry 。如果两个字符串的长度不同,可以用 0 补齐。最后,如果 carry 不为 0 ,还要将它加入 StringBuilder 中。最后,将 StringBuilder 反转并转换为字符串,就是最终的答案
这个解法的时间复杂度是 O(max(m,n)) ,其中 m 和 n 是两个字符串的长度。空间复杂度是 O(max(m,n)) ,因为需要一个额外的 StringBuilder 来存储结
我的思路是模拟竖式加法的过程。
我们从两个字符串的末尾开始,
- 每次取出一个字符,把它们转换为数字,然后相加。
- 如果有进位,我们把它加到下一位的和上。
- 我们把每一位的和的个位数加到结果中,
- 然后更新进位。
我们重复这个过程,
直到两个字符串都没有位数或进位为零。
最后,我们把结果反转,因为我们是从低位到高位计算的。
代码逻辑
我的思路的步骤:
- 初始化一个StringBuilder来存储结果,一个整数变量carry来表示进位,两个整数变量i和j来表示num1和num2的指针。
- 从两个字符串的末尾开始,即i = num1.length() - 1,j = num2.length() - 1。
- 当任一字符串还有位数或进位不为零时,执行以下操作:
- 初始化一个整数变量sum为carry的值。
- 如果num1还有位数,即i >= 0,则把num1.charAt(i)转换为数字并加到sum上,然后把i减一。
- 如果num2还有位数,即j >= 0,则把num2.charAt(j)转换为数字并加到sum上,然后把j减一。
- 把sum的个位数加到结果中,即sb.append(sum % 10)。
- 更新进位为sum的十位数,即carry = sum / 10。
- 反转结果并转换为字符串,即return sb.reverse().toString()。
具体实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | class Solution { public String addStrings(String num1, String num2) { StringBuilder sb = new StringBuilder(); int carry = 0 ; // 进位 int i = num1.length() - 1 ; // num1的指针 int j = num2.length() - 1 ; // num2的指针 while (i >= 0 || j >= 0 || carry > 0 ) { // 当任一字符串还有位数或进位不为零时 int sum = carry; // 当前位的和 if (i >= 0 ) { // 如果num1还有位数 sum += num1.charAt(i) - '0' ; // 把字符转换为数字并加到sum上 i--; // 移动指针 } if (j >= 0 ) { // 如果num2还有位数 sum += num2.charAt(j) - '0' ; // 把字符转换为数字并加到sum上 j--; // 移动指针 } sb.append(sum % 10 ); // 把sum的个位数加到结果中 carry = sum / 10 ; // 更新进位 } return sb.reverse().toString(); // 反转结果并转换为字符串 } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2019-04-10 web.xml中<load-on-start>n</load-on-satrt>作用
2019-04-10 JavaWeb中filter的详解及应用案例
2019-04-10 Tomcat的简单归纳总结
2019-04-10 Tomcat 配置详解和优化
2019-04-10 深入理解Tomcat
2019-04-10 Tomcat启动过程原理详解
2019-04-10 Tomcat的目录结构详细介绍(超全)