我是靠谱客的博主 复杂烧鹅,最近开发中收集的这篇文章主要介绍算法-leetcode-字符串问题- 415. 字符串相加,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • `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. 字符串相加所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部