【Leetcode】415.字符串相加

题目描述:

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

注意:

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

解题思路:

加法器,需要注意进位的。其他的按照对应位相加。

AC代码:

class Solution {
public:
string addStrings(string num1, string num2) 
{
	reverse(num1.begin(), num1.end());
	reverse(num2.begin(), num2.end());
	char carry = 0;

	string res;
	
	for (int i = 0; i < max(num1.size(), num2.size()); i++)
	{
		if (i >= num1.size())
		{
			if ((num2[i] + carry) > '9')
			{
				res.push_back(num2[i] + carry-10);
				carry = 1;
			}
			else
			{
				res.push_back(num2[i] + carry);
				carry = 0;
			}
		}
		else if (i >= num2.size())
		{
			if ((num1[i] + carry) > '9')
			{
				res.push_back(num1[i] + carry - 10);
				carry = 1;
			}
			else
			{
				res.push_back(num1[i] + carry);
				carry = 0;
			}
		}
		else
		{
			if ((num1[i] - '0') + (num2[i] - '0')+carry > 9)
			{
				res.push_back(((num1[i] - '0') + (num2[i] - '0') + carry-10)+'0');
				carry = 1;
			}
			else
			{
				res.push_back((num1[i] - '0') + (num2[i] - '0') + carry + '0');
				carry = 0;
			}
		}
	}
	if (carry == 1)
		res.push_back('1');
	reverse(res.begin(), res.end());
	return res;
}


};

猜你喜欢

转载自blog.csdn.net/wez031113/article/details/83744028