ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【算法】编写一个函数,返回两个正数的和,有可能超过ulong长度 [打印本页]

作者: 篮之新喜    时间: 2023-8-2 11:14
标题: 【算法】编写一个函数,返回两个正数的和,有可能超过ulong长度
编写一个函数,返回两个数字的和。输入数字是字符串,函数必须返回一个字符串。
示例:
添加(“123”,“321”);->“444”
添加(“11”,“99”);->“110”
备注:
输入的数字很大,有可能超过ulong长度。
输入是一个只有数字的字符串。
数字是正数。
 
 
算法实现:
  1. 1 using System;
  2. 2
  3. 3 public class Edm
  4. 4 {
  5. 5     public static string AddNumbers(string num1, string num2)
  6. 6     {
  7. 7         int n1 = num1.Length;
  8. 8         int n2 = num2.Length;
  9. 9         
  10. 10         int maxSize = Math.Max(n1, n2); // 获取系统支持的最大长度
  11. 11     
  12. 12     int carry = 0; // 进位值
  13. 13     
  14. 14     string sum = ""; // 存储结果
  15. 15     
  16. 16     // 从最低位到最高位进行迭代
  17. 17     for (int i = 0; i < maxSize; i++)
  18. 18     {
  19. 19         // 从输入数字中获取当前位的数字,考虑前导零
  20. 20         int digit1 = (i < n1) ? num1[n1 - 1 - i] - '0' : 0;
  21. 21         int digit2 = (i < n2) ? num2[n2 - 1 - i] - '0' : 0;
  22. 22         
  23. 23         // 将当前位的数字与进位值相加
  24. 24         int currentSum = digit1 + digit2 + carry;
  25. 25         
  26. 26         // 更新进位值,并将和的最低位添加到结果中
  27. 27         carry = currentSum / 10;
  28. 28         sum = (currentSum % 10).ToString() + sum;
  29. 29     }
  30. 30     
  31. 31     // 如果还有剩余的进位值,将其添加到结果中
  32. 32     if (carry > 0)
  33. 33     {
  34. 34         sum = carry.ToString() + sum;
  35. 35     }
  36. 36         
  37. 37         return sum;
  38. 38     }
  39. 39 }
复制代码
测试用例:
[code][/code]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"));
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4