Leetcode 字串相加與字串相減

2021-10-09 04:43:36 字數 1640 閱讀 9941

題目描述2:

注意事項:

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

示例:輸入

string s1 = 「12」 string s2 = 「28」

輸出string s3 = 「40」

這個題最容易想到的做法就是將字串直接轉換成數字進行相加,然後將相加和轉為字串返回,但是兩個字串直接轉為數字是很容易溢位的,所以這個簡單的方法不可行,我們要在字串的基礎上一位一位的進行相加,需要注意的點就是兩個0-9的數字相加後可能會有進製位,需要記錄下來。

string addstrings

(string num1, string num2)

else

if(n >=0)

else

if(m >=0)

else

}/字串逆置,可以直接用reverse(s.begin(),s.end())

for(

int i =

0;isize()

/2;i++

)return s;

}

計算兩個非負整數字串的相乘,並返回這個字串

示例:輸入

string s1 = 「100」 string s2 = 「2」

輸出string s3 = 「200」

注:s1 s2的長度不會超過110

這個題與字串相加一樣,不能直接轉換成數字進行操作,因為會溢位。結合我們平時做乘法的規律,我們是拿乘數的每一位與被乘數相乘,然後再給相應的後面加0,把這幾個數加起來就得到了乘積。例如,123x12,先計算1232 = 246,再計算1231 = 123,在123後面加乙個0為1230,最後1230+246 = 1476

每一位與num1相乘

string multi

(string num1,

int val)

if(ans !=0)

reverse

(s.begin()

,s.end()

);return s;

}

字串相加

string addstrings

(string num1, string num2)

else

if(n >=0)

else

if(m >=0)

else

}for

(int i =

0;isize()

/2;i++

)return s;

}

兩個字串相乘

string multiply

(string num1, string num2)

else

}for

(int i=

0;i < num2.

size()

;i++)}

int k = num2.

size()

-1;int h = num2.

size()

;while

(k--)}

return s[0]

;}

字串的加減乘除操作一定要小心溢位的情況,不能盲目轉換

leetcode 字串相加

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

leetcode 字串相加

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

LeetCode 415 字串相加

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