LeetCode每日一题:字符串相加

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

注意:

num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。

解题思路:
定义两个双指针,从两个字符串的尾部开始,即最低位,然后定义一个result存储两位相加的结果,用一个add变量维护进位

class Solution {
    public String addStrings(String num1, String num2) {
       int i = num1.length()-1,j = num2.length()-1,add = 0;
       StringBuffer sb = new StringBuffer();
       while( i >=0 || j>=0 || add!=0){
           int x = i>=0 ? num1.charAt(i)-'0' : 0; // 判断位置上是否还有数字
           int y = j>=0 ? num2.charAt(j)-'0' : 0;// 判断位置上是否还有数字
           int result = x +y +add; // 计算,add是上一次计算的进位
           sb.append(result%10); // 取个位的数字,防止有进位
           add = result / 10; // 保存进位
           i--;
           j--;
       } 

       return sb.reverse().toString(); // 记得反转字符串
    }
}

猜你喜欢

转载自blog.csdn.net/WXZCYQ/article/details/107760877