NC1-大整数相加
描述
以字符串的形式讀入兩個數字,編寫一個函數計算它們的和,以字符串形式返回。
(字符串長度不大于100000,保證字符串僅由'0'~'9'這10種字符組成)
示例1
輸入:
"1","99"返回值:
"100"說明:
1+99=100java代碼:
public class Solution {/*** 代碼中的類名、方法名、參數名已經指定,請勿修改,直接返回方法規定的值即可* 計算兩個數之和* @param s string字符串 表示第一個整數* @param t string字符串 表示第二個整數* @return string字符串*/public String solve (String s, String t) {StringBuilder sb=new StringBuilder();int i=s.length()-1,j=t.length()-1;int carry=0;int sum;while(i>=0&&j>=0){sum=(s.charAt(i)-'0')+(t.charAt(j)-'0')+carry;carry=sum/10;int t0=sum%10;sb.append(t0);i--;j--;}while(i>=0){sum=(s.charAt(i)-'0')+carry;carry=sum/10;int t0=sum%10;sb.append(t0);i--;}while(j>=0){sum=(t.charAt(j)-'0')+carry;carry=sum/10;int t0=sum%10;sb.append(t0);j--;}if(carry>0){sb.append(carry);}String str=sb.reverse().toString();return str;} }java代碼解題2:
public class Solution {/*** 代碼中的類名、方法名、參數名已經指定,請勿修改,直接返回方法規定的值即可* 計算兩個數之和* @param s string字符串 表示第一個整數* @param t string字符串 表示第二個整數* @return string字符串*/public String solve (String s, String t) {// write code herechar[] s1=s.toCharArray();char[] t1=t.toCharArray();StringBuilder sb=new StringBuilder();String restult="";int num=s1.length>t1.length?s1.length:t1.length;int[] res=new int[num+1];int temp=0;int k=0;int i=s1.length-1,j=t1.length-1;while(i>=0&&j>=0){int a=temp+Integer.parseInt(String.valueOf(s1[i]))+Integer.parseInt(String.valueOf(t1[j]));temp=a/10;res[k++]=a%10;i--;j--; }while(i>=0){int b=temp+Integer.parseInt(String.valueOf(s1[i]));temp=b/10;res[k++]=b%10;i--; }while(j>=0){int b=temp+Integer.parseInt(String.valueOf(t1[j]));temp=b/10;res[k++]=b%10;j--; }if(temp>0){res[k]=temp;} for(int v:res){sb.append(v+"");}restult=sb.reverse().toString();// "08265996771045089025731571375775911506758574079559248265"char[] ch=restult.toCharArray();StringBuilder sb1=new StringBuilder();int m=0;while(m<=(ch.length-1)&&ch[m]=='0'){m++;}if(m==ch.length){restult="0";}else{while(m<=ch.length-1){sb1.append(ch[m]); m++;}restult=sb1.toString();} return restult;} }總結
- 上一篇: NC33-合并两个有序的链表
- 下一篇: NC7-买卖股票的最好时机