題目描述:
給定兩個字串形式的非負整數 num1 和num2 ,計算它們的和。
注意:
num1 和num2 的長度都小於 5100.
num1 和num2 都只包含數字 0-9.
num1 和num2 都不包含任何前導零。
你不能使用任何內建 biginteger 庫, 也不能直接將輸入的字串轉換為整數形式。
方法1:
主要思路:
(1)先處理特殊的情形,既兩個字串中其中乙個為空的情況;
(2)對於兩個字串的相加的情形,則直接使用兩個字串的反向遍歷迭代器實現從後面向前面的遍歷,並在遍歷相加的過程中,避免某個迭代器已經到反向終點的情形;
class
solution
if(num2.
empty()
) string res;
res.
reserve
(5100);
//反向迭代
auto it1=num1.
rbegin()
;auto it2=num2.
rbegin()
;int higher=0;
//標識是否進製
//直到兩個迭代器都終止
while
(it1!=num1.
rend()
||it2!=num2.
rend()
)//若其中的乙個迭代器遍歷到終點的情形
else
if(it1!=num1.
rend()
)else
//對於兩個位的和大於9的情形
if(tmp>9)
//小於等於9的情形
else
}//處理最終是否進製的情形
if(higher)
//將獲得的字串反向
reverse
(res.
begin()
,res.
end())
;return res;}}
;
415 字串相加
設定 i,j 兩指標分別指向 num1,num2 尾部,模擬人工加法 計算進製 計算 carry tmp 10,代表當前位相加是否產生進製 新增當前位 計算 tmp n1 n2 carry,並將當前位 tmp 10 新增至 res 頭部 索引溢位處理 當指標 i或j 走過數字首部後,給 n1,n2 ...
415 字串相加
給定兩個字串形式的非負整數 num1 和num2 計算它們的和。注意 num1 和num2 的長度都小於 5100.num1 和num2 都只包含數字 0 9.num1 和num2 都不包含任何前導零。你不能使用任何內建 biginteger 庫,也不能直接將輸入的字串轉換為整數形式。public ...
LeeCode 415 字串相加
給定兩個字串形式的非負整數num1和num2,計算它們的和。注意 num1和num2的長度都小於 5100.num1和num2都只包含數字0 9.num1和num2都不包含任何前導零。你不能使用任何內建 biginteger 庫,也不能直接將輸入的字串轉換為整數形式。沒什麼太好的方法,暫時只想到了模...