【每日一题Day268】LC415字符串相加 | 模拟

简介: 【每日一题Day268】LC415字符串相加 | 模拟

字符串相加【LC415】

给定两个字符串形式的非负整数 num1num2 ,计算它们的和并同样以字符串形式返回。

你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。

Given two non-negative integers, num1 and num2 represented as string, return the sum of num1 and num2 as a string.

You must solve the problem without using any built-in library for handling large integers (such as BigInteger). You must also not convert the inputs to integers directly.

简单模拟运算

  • 思路:使用双指针从整数的最低位模拟相加操作
  • 使用两个指针从整数的低位开始定位字符,模拟相加操作
  • 使用变量记录低位的进位,将每位的相加结果放入StringBuilder变量的开头中

image.png

class Solution {
    public String addStrings(String num1, String num2) {
        StringBuilder sb = new StringBuilder();
        int i = num1.length() - 1, j = num2.length() - 1;
        int cnt = 0;
        while (i >= 0 || j >= 0 || cnt != 0){
            int val1 =  i >= 0 ? num1.charAt(i) - '0' : 0;
            int val2 =  j >= 0 ? num2.charAt(j) - '0' : 0;
            sb.insert(0,(val1+val2+cnt)%10);
            cnt = (val1+val2+cnt) / 10;
            i--;
            j--;
        }
        return new String(sb);
    }
}

image.png

目录
相关文章
|
6月前
【每日一题Day290】LC1281整数的各位积和之差 | 模拟
【每日一题Day290】LC1281整数的各位积和之差 | 模拟
41 0
|
6月前
【每日一题Day210】LC1073负二进制数相加 | 模拟
【每日一题Day210】LC1073负二进制数相加 | 模拟
34 0
|
6月前
|
存储
【每日一题Day253】LC2两数相加 | 链表模拟
【每日一题Day253】LC2两数相加 | 链表模拟
24 0
|
6月前
【每日一题Day345】LC2562找出数组的串联值 | 模拟
【每日一题Day345】LC2562找出数组的串联值 | 模拟
40 0
|
6月前
【每日一题Day119】LC1250检查好数组 | 数学
【每日一题Day119】LC1250检查好数组 | 数学
46 0
|
6月前
|
算法
【每日一题Day349】LC260只出现一次的数字 III | 位运算
【每日一题Day349】LC260只出现一次的数字 III | 位运算
44 0
|
6月前
|
算法
【每日一题Day347】LC136只出现一次的数字 | 位运算
【每日一题Day347】LC136只出现一次的数字 | 位运算
49 0
|
6月前
【每日一题Day194】LC970强整数 | 枚举
【每日一题Day194】LC970强整数 | 枚举
36 0
|
6月前
【每日一题Day371】LC2586统计范围内的元音字符串数 | 模拟
【每日一题Day371】LC2586统计范围内的元音字符串数 | 模拟
54 1
|
6月前
【每日一题Day169】LC1107负二进制转换 | 模拟进位 位运算
【每日一题Day169】LC1107负二进制转换 | 模拟进位 位运算
34 1