LeetCode 415——字符串相加

一、題目介紹

給定兩個字符串形式的非負整數 num1 和num2 ,計算它們的和。

注意:

num1 和num2 的長度都小於 5100.
num1 和num2 都只包含數字 0-9.
num1 和num2 都不包含任何前導零。
你不能使用任何內建 BigInteger 庫, 也不能直接將輸入的字符串轉換爲整數形式。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/add-strings
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

二、解題思路

本題考查大數加法,即按字節相加,相加的過程中注意進位操作。模擬豎式加法的過程。

三、解題代碼

class Solution {
public:
    string addStrings(string num1, string num2) {
        int c = 0, r, p, q;
        string res;
        int l1 = num1.length()-1;
        int l2 = num2.length()-1;
        while(l1 >= 0 || l2 >= 0)
        {
            p = l1 < 0 ? 0 : num1[l1--] - '0';
            q = l2 < 0 ? 0 : num2[l2--] - '0';
            r = (p+q+c)%10; //當前位剩餘值
            c = (p+q+c)/10; //進位值
            res = (char)(r + '0') + res;
        }
        return c == 0 ? res : (char)(c + '0') + res;
    }
};

四、解題結果

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章