【LeetCode】415. 字符串相加

解題思路

模擬豎式乘法,解決大數相乘問題

考點

大數相乘

代碼

class Solution {
public:
	string addStrings(string num1, string num2) {
		//if (num1.length()==1&& stoi(to_string(num1[0]))==0|| num2.length() == 1 && stoi(to_string(num2[0])) == 0)
		//{
		//	return "0";//如果num1某個字符
		//}
		int i = num1.length() - 1, j = num2.length() - 1;//i,j指針分佈指向num1,num2尾部,模擬人工加法
		int carry = 0;//記入進位值
		string res = "";//記錄結果
		while (i >= 0 || j >= 0)
		{
			int tmp = 0;//計算每一位相加的值
			int n1 = i < 0 ? 0 : num1[i]-'0';
			int n2 = j < 0 ? 0 : num2[j] - '0';
			tmp = n1 + n2 + carry;//計算每一對應位相加的和
			carry = tmp / 10;//保留進位數
			tmp %= 10;//保留餘數
			res.append(to_string(tmp));
			i--, j--;//前移一位
		}
		if (carry == 1)//如果num1,num2的最高一位相加後進位了,最後還要加上進位
		{
			res.append(to_string(carry));
		}
		string s(res.rbegin(), res.rend());//結果逆序輸出
		return s;
	}
};
發佈了99 篇原創文章 · 獲贊 19 · 訪問量 8196
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章