編寫一個(gè)函數(shù),返回兩個(gè)數(shù)字的和。輸入數(shù)字是字符串,函數(shù)必須返回一個(gè)字符串。
示例:
添加(“123”,“321”);->“444”
添加(“11”,“99”);->“110”
備注:
輸入的數(shù)字很大,有可能超過(guò)ulong長(zhǎng)度。
輸入是一個(gè)只有數(shù)字的字符串。
數(shù)字是正數(shù)。
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-622102.html
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-622102.html
算法實(shí)現(xiàn):
1 using System; 2 3 public class Edm 4 { 5 public static string AddNumbers(string num1, string num2) 6 { 7 int n1 = num1.Length; 8 int n2 = num2.Length; 9 10 int maxSize = Math.Max(n1, n2); // 獲取系統(tǒng)支持的最大長(zhǎng)度 11 12 int carry = 0; // 進(jìn)位值 13 14 string sum = ""; // 存儲(chǔ)結(jié)果 15 16 // 從最低位到最高位進(jìn)行迭代 17 for (int i = 0; i < maxSize; i++) 18 { 19 // 從輸入數(shù)字中獲取當(dāng)前位的數(shù)字,考慮前導(dǎo)零 20 int digit1 = (i < n1) ? num1[n1 - 1 - i] - '0' : 0; 21 int digit2 = (i < n2) ? num2[n2 - 1 - i] - '0' : 0; 22 23 // 將當(dāng)前位的數(shù)字與進(jìn)位值相加 24 int currentSum = digit1 + digit2 + carry; 25 26 // 更新進(jìn)位值,并將和的最低位添加到結(jié)果中 27 carry = currentSum / 10; 28 sum = (currentSum % 10).ToString() + sum; 29 } 30 31 // 如果還有剩余的進(jìn)位值,將其添加到結(jié)果中 32 if (carry > 0) 33 { 34 sum = carry.ToString() + sum; 35 } 36 37 return sum; 38 } 39 }
測(cè)試用例:
Assert.AreEqual("111111111011111111100", Edm.Add("12345678901234567890", "98765432109876543210"));
Assert.AreEqual("1000000000000000000", Edm.Add("999999999999999999", "1"));
Assert.AreEqual("12345678901234567891", Edm.Add("12345678901234567890", "1"));
Assert.AreEqual("11111111110", Edm.Add("99999999999", "1111111111"));
Assert.AreEqual("123456798", Edm.Add("999999999", "123456789"));
?
?
到了這里,關(guān)于【算法】編寫一個(gè)函數(shù),返回兩個(gè)正數(shù)的和,有可能超過(guò)ulong長(zhǎng)度的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!