NC1-大整数相加

比眉伴天荒 2023-10-04 16:48 72阅读 0赞

描述

以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。

(字符串长度不大于100000,保证字符串仅由’0’~’9’这10种字符组成)

示例1

输入:

  1. "1","99"

返回值:

  1. "100"

说明:

  1. 1+99=100

java代码:

  1. public class Solution {
  2. /**
  3. * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
  4. * 计算两个数之和
  5. * @param s string字符串 表示第一个整数
  6. * @param t string字符串 表示第二个整数
  7. * @return string字符串
  8. */
  9. public String solve (String s, String t) {
  10. StringBuilder sb=new StringBuilder();
  11. int i=s.length()-1,j=t.length()-1;
  12. int carry=0;
  13. int sum;
  14. while(i>=0&&j>=0){
  15. sum=(s.charAt(i)-'0')+(t.charAt(j)-'0')+carry;
  16. carry=sum/10;
  17. int t0=sum%10;
  18. sb.append(t0);
  19. i--;
  20. j--;
  21. }
  22. while(i>=0){
  23. sum=(s.charAt(i)-'0')+carry;
  24. carry=sum/10;
  25. int t0=sum%10;
  26. sb.append(t0);
  27. i--;
  28. }
  29. while(j>=0){
  30. sum=(t.charAt(j)-'0')+carry;
  31. carry=sum/10;
  32. int t0=sum%10;
  33. sb.append(t0);
  34. j--;
  35. }
  36. if(carry>0){
  37. sb.append(carry);
  38. }
  39. String str=sb.reverse().toString();
  40. return str;
  41. }
  42. }

java代码解题2:

  1. public class Solution {
  2. /**
  3. * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
  4. * 计算两个数之和
  5. * @param s string字符串 表示第一个整数
  6. * @param t string字符串 表示第二个整数
  7. * @return string字符串
  8. */
  9. public String solve (String s, String t) {
  10. // write code here
  11. char[] s1=s.toCharArray();
  12. char[] t1=t.toCharArray();
  13. StringBuilder sb=new StringBuilder();
  14. String restult="";
  15. int num=s1.length>t1.length?s1.length:t1.length;
  16. int[] res=new int[num+1];
  17. int temp=0;
  18. int k=0;
  19. int i=s1.length-1,j=t1.length-1;
  20. while(i>=0&&j>=0){
  21. int a=temp+Integer.parseInt(String.valueOf(s1[i]))+Integer.parseInt(String.valueOf(t1[j]));
  22. temp=a/10;
  23. res[k++]=a%10;
  24. i--;
  25. j--;
  26. }
  27. while(i>=0){
  28. int b=temp+Integer.parseInt(String.valueOf(s1[i]));
  29. temp=b/10;
  30. res[k++]=b%10;
  31. i--;
  32. }
  33. while(j>=0){
  34. int b=temp+Integer.parseInt(String.valueOf(t1[j]));
  35. temp=b/10;
  36. res[k++]=b%10;
  37. j--;
  38. }
  39. if(temp>0){
  40. res[k]=temp;
  41. }
  42. for(int v:res){
  43. sb.append(v+"");
  44. }
  45. restult=sb.reverse().toString();// "08265996771045089025731571375775911506758574079559248265"
  46. char[] ch=restult.toCharArray();
  47. StringBuilder sb1=new StringBuilder();
  48. int m=0;
  49. while(m<=(ch.length-1)&&ch[m]=='0'){
  50. m++;
  51. }
  52. if(m==ch.length){
  53. restult="0";
  54. }
  55. else{
  56. while(m<=ch.length-1){
  57. sb1.append(ch[m]);
  58. m++;
  59. }
  60. restult=sb1.toString();
  61. }
  62. return restult;
  63. }
  64. }

发表评论

表情:
评论列表 (有 0 条评论,72人围观)

还没有评论,来说两句吧...

相关阅读

    相关 NC1-整数相加

    描述 以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。 (字符串长度不大于100000,保证字符串仅由'0'~'9'这10种字符组成) 示例

    相关 整数相加

    > Description > > 给你两个整数n,m,求从n到m之间所有数字之和,保证0<=n<=m > > Input > > 只有一行包含两个整数n,m