字串相加

2021-09-26 07:04:05 字數 2712 閱讀 6732

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

注意:num1 和num2 的長度都小於 5100.

num1 和num2 都只包含數字 0-9.

num1 和num2 都不包含任何前導零。

你不能使用任何內建 biginteger 庫, 也不能直接將輸入的字串轉換為整數形式。

分析雙指標分別指向兩個字串的末尾,同步向前移動,分別取當前指標所代表的的數字,然後相加,保留進製,下次相加時在加上進製,要注意的是兩個字串長度不同,指標的位置已經到頭了,就讓該位置的值為0,這是乙個重要的技巧。

時間o(n),空間o(1)

核心技巧:

int n1 = i >= 0 ? num1.charat(i)-'0' : 0;

int tmp = n1+n2+carry;

carry = tmp / 10; 進製

class

solution

if(carry >0)

return sb.

reverse()

.tostring()

;}}

對於非負整數 x 而言,x 的陣列形式是每位數字按從左到右的順序形成的陣列。例如,如果 x = 1231,那麼其陣列形式為 [1,2,3,1]。

給定非負整數 x 的陣列形式 a,返回整數 x+k 的陣列形式。

示例 1:

輸入:a = [1,2,0,0], k = 34

輸出:[1,2,3,4]

解釋:1200 + 34 = 1234

解釋 2:

輸入:a = [2,7,4], k = 181

輸出:[4,5,5]

解釋:274 + 181 = 455

示例 3:

輸入:a = [2,1,5], k = 806

輸出:[1,0,2,1]

解釋:215 + 806 = 1021

示例 4:

輸入:a = [9,9,9,9,9,9,9,9,9,9], k = 1

輸出:[1,0,0,0,0,0,0,0,0,0,0]

解釋:9999999999 + 1 = 10000000000

class

solution

//當carry過大時,需要依次去下carry的每一位

while

(carry >0)

return res;

}}

給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。

最高位數字存放在陣列的首位, 陣列中每個元素只儲存單個數字。

你可以假設除了整數 0 之外,這個整數不會以零開頭。

示例 1:

輸入: [1,2,3]

輸出: [1,2,4]

解釋: 輸入陣列表示數字 123。

示例 2:

輸入: [4,3,2,1]

輸出: [4,3,2,2]

解釋: 輸入陣列表示數字 4321。

class

solution

//carry此時有可能不為0,說明最高位還有數字

while

(carry >0)

//翻轉arraylist,放到陣列中

collections.

reverse

(res)

;int

new_res =

newint

[res.

size()

];for(

int i =

0; isize()

; i++

)return new_res;

}}

給定兩個二進位制字串,返回他們的和(用二進位制表示)。

輸入為非空字串且只包含數字 1 和 0。

示例 1:

輸入: a = 「11」, b = 「1」

輸出: 「100」

示例 2:

輸入: a = 「1010」, b = 「1011」

輸出: 「10101」

class

solution

while

(carry >0)

return sb.

reverse()

.tostring()

;}}

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。

如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。

您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。

示例:輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)

輸出:7 -> 0 -> 8

原因:342 + 465 = 807

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

else

carry = tmp /10;

if(l1 != null)

if(l2 != null)}if

(carry >0)

return p;

}}

字串相加

題目 給定兩個字串形式的非負整數num1和num2,計算它們的和。注意 num1和num2的長度都小於 5100.num1和num2都只包含數字0 9.num1和num2都不包含任何前導零。你不能使用任何內建 biginteger 庫,也不能直接將輸入的字串轉換為整數形式 分析 注意幾個方面 1 迴...

字串相加

給定兩個字串形式的非負整數 num1 和num2 計算它們的和。注意 num1 和num2 的長度都小於 5100.num1 和num2 都只包含數字 0 9.num1 和num2 都不包含任何前導零。你不能使用任何內建 biginteger 庫,也不能直接將輸入的字串轉換為整數形式。class s...

字串相加

給定兩個字串形式的非負整數 num1 和num2 計算它們的和。注 num1 和num2 的長度都小於 5100.num1 和num2 都只包含數字 0 9.num1 和num2 都不包含任何前導零。不能使用任何內建 biginteger 庫,也不能直接將輸入的字串轉換為整數形式。分析 字串形式的整...