字符串 - 使用字符串模擬兩數(shù)相加

415. 字符串相加

題目描述:

給定兩個(gè)字符串形式的非負(fù)整數(shù) num1 和num2 ,計(jì)算它們的和。
提示:
num1 和num2 的長(zhǎng)度都小于 5100
num1 和num2 都只包含數(shù)字 0-9
num1 和num2 都不包含任何前導(dǎo)零
你不能使用任何內(nèi)建 BigInteger 庫(kù), 也不能直接將輸入的字符串轉(zhuǎn)換為整數(shù)形式

算法思想:

解法一:雙指針解法
分別定義兩個(gè)指針,指向字符串str1和字符串str2的尾部,然后,相同位上的數(shù)字進(jìn)行算術(shù)加法,同時(shí)記錄每次加法運(yùn)算的進(jìn)位。
傳送門(mén)

代碼實(shí)現(xiàn):

解法一:雙指針解法

class Solution {
    public String addStrings(String num1, String num2) {
        int i = num1.length() - 1;
        int j = num2.length() - 1;
        // carry表示進(jìn)位
        int carry = 0;
        // sum表示每位相加的和
        int sum;
        StringBuilder builder = new StringBuilder();

        while (i >= 0 && j >= 0) {
            sum = (num1.charAt(i)-'0') + (num2.charAt(j) - '0') + carry;
            builder.append(sum % 10);
            carry = sum / 10;
            i --;
            j --;
        }

        while (i >= 0) {
            sum = (num1.charAt(i) - '0') + carry;
            builder.append(sum % 10);
            carry = sum / 10;
            i --;
        }

        while (j >= 0) {
            sum = (num2.charAt(j) - '0') + carry;
            builder.append(sum % 10);
            carry = sum / 10;
            j --;
        }

        if (carry > 0) {
            builder.append(carry);
        }

        return builder.reverse().toString();
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容