概述
文章目录
- `415. 字符串相加`
- 思路: 分别遍历个位,十位,百位等等,每位加和,如果超过10,则进位保留,下一次加在高位上
415. 字符串相加
https://leetcode-cn.com/problems/add-strings/
思路: 分别遍历个位,十位,百位等等,每位加和,如果超过10,则进位保留,下一次加在高位上
- 遍历终止条件:两字符串最大长度-1
- 注意事项:遍历结束,如果仍然有进位,记得把最后一位给加上
- 结果通过StringBuilder倒序拼接,最后再反转即可
package com.shangguigu.dachang.algrithm.A03_Strings;
/**
* @author : 不二
* @date : 2022/4/8-上午8:15
* @desc : 415. 字符串相加
* https://leetcode-cn.com/problems/add-strings/
*
*
**/
public class A30_addStrings {
public static void main(String[] args) {
String num1 = "1", num2 = "9";
String s = addStrings(num1, num2);
System.out.println("结果是:" + s);
}
public static String addStrings(String num1, String num2) {
int l1 = num1.length()-1;
int l2 = num2.length()-1;
// 遍历位数,哪个位数多,就按照多的位数个数进行遍历
// 从个位开始遍历
int step = Math.max(l1, l2);
StringBuilder builder = new StringBuilder();
// 这个是进位
int carry = 0;
for (int i = step; i >= 0; i--) {
// 最高位是:
int l1Pos = i - (step-l1);
System.out.println(l1Pos);
int c1 = 0;
if (l1Pos >= 0) {
c1 = num1.charAt(l1Pos) - '0';
}
int l2Pos = i - (step - l2);
System.out.println(l2Pos);
int c2 = 0;
if (l2Pos >= 0) {
c2 = num2.charAt(l2Pos) - '0';
}
int tmp = c1 + c2;
// 如果前面的进位不为0, 则需要添加到tmp上,方便追加
if (carry != 0) {
tmp += carry;
}
builder.append(tmp % 10);
carry = tmp / 10;
}
// 遍历完之后,如果还有进位,则需要单独进位
if (carry != 0) {
builder.append(carry);
}
return builder.reverse().toString();
}
}
最后
以上就是复杂烧鹅为你收集整理的算法-leetcode-字符串问题- 415. 字符串相加的全部内容,希望文章能够帮你解决算法-leetcode-字符串问题- 415. 字符串相加所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复