題目描述:
給定兩個以字串形式儲存的大整數,要求以字串形式輸出相乘後的結果。
思路:
模擬計算乘法時列豎式的過程,對於兩個字串s1和s2,讓s2的每一位和s1整體相乘,求得一組中間值,然後對中間值做移位操作,最後將移位後的所有中間值相加即可求得最終結果。
問題的關鍵在於實現兩個函式,用於計算兩個字串相加以及字串和單個字元相乘的結果。
//計算兩個字串相加
string myadd(const
string &s1, const
string &s2);
//字串和單個字元相乘
string mymult(const
string &s, const
char c);
//消除結果中多餘的『0』
string & check_num(string &s);
//計算倆個字串的乘積
string mymult(string &s1, string &s2)
return check_num(res);
}string mymult(const
string &s, const
char c)
if(carry > 0)
res.insert(res.begin(), char('0' + carry));
return res;
}string myadd(const
string &s1, const
string &s2)
if(i < 0 && j < 0)
while(i >= 0)
while(j >= 0)
return res;
}string & check_num(string &s)
while(s[0] == '0' && s.size() > 1)
return s;
}
分治演算法 大整數相乘 字串實現
由於網上大部分用分治演算法實現的大整數相乘程式,其輸入乘數竟然設定為int值,實現了分治思想,但實在不能稱其為大整數。本文實現了用字串儲存乘數,並且輸出正確結果。由於演算法未經過大量資料測試,可能還存在問題,歡迎指教討論,求輕踩。演算法分析 下面的函式均為分治函式設定,因為分治後得到的m1,m2,m...
大整數相乘 leetcode 43 字串相乘
有兩個用字串表示的非常大的大整數,算出他們的乘積,也是用字串表示。不能用系統自帶的大整數型別。輸入描述 空格分隔的兩個字串,代表輸入的兩個大整數 輸出描述 輸入的乘積,用字串表示 示例1輸入 72106547548473106236 982161082972751393 輸出708202448296...
演算法之字串相乘
給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 num1 和 num2 的長度小於110。nu...