LeetCode 字符串相加(造轮子)

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

注意:

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

思路分析:没啥好分析的,撸起袖子就是一梭子。。。

class Solution {
public:
    string addStrings(string num1, string num2) {
        string result = num1;
		int lengthNumOne = num1.size();
		int lengthNumTwo = num2.size();
		int lengthResult = max(lengthNumOne, lengthNumTwo);//对齐后的长度
		//首先将数位进行对齐
		if (lengthNumOne < lengthNumTwo){
			for (int i = lengthNumOne; i < lengthNumTwo; ++i){
				result = "0" + result;
			}
		}
		else {
			for (int i = lengthNumTwo; i < lengthNumOne; ++i){
				num2 = "0" + num2;
			}
		}
		//加法的核心算法,index从低位加到下标1,因为下标0可能产生进位
		for (int index = lengthResult - 1; index > 0; --index){
			result[index] += num2[index] - '0';
			if (result[index] > '9'){//产生进位
				result[index] -= 10;
				++result[index - 1];
			}
		}
		result[0] += num2[0] - '0';
		if (result[0] > '9'){//最高位产生进位
			result[0] -= 10;
			result = "1" + result;
		}
		return result;
    }
};

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41855420/article/details/88725881