隨筆-給定兩個字串形式的非負整數 num1 和num2 ,計算它們的和
阿新 • • 發佈:2018-12-18
題目:給定兩個字串形式的非負整數 num1 和num2 ,計算它們的和。
注意:
num1 和num2 的長度都小於 5100.
num1 和num2 都只包含數字 0-9.
num1 和num2 都不包含任何前導零。
你不能使用任何內建 BigInteger 庫, 也不能直接將輸入的字串轉換為整數形式。
思路:從兩個字串最後一位開始相加,如果結果大於9,進位。 當有一個加完後,呼叫substring方法將剩餘的字串給拼接過去;
class Solution { public String addStrings(String num1, String num2) { if(num1==null || num2==null || num1.length()==0 || num2.length()==0 ){ return ""; } int len1=num1.length()-1; int len2=num2.length()-1; int result=0; String s=""; int sum; while(len1>=0||len2>=0){ if(len1<0&&len2>=0){ //num2 沒加完 sum=num2.charAt(len2)+result-'0'; if(result!=0){ if(sum>9){ result=1; s=String.valueOf(sum%10)+s; }else{ s=String.valueOf(sum%10)+s; result=0; } }else{ s=num2.substring(0,len2+1)+s; result=0; break; } } if(len1>=0&&len2<0){ sum=num1.charAt(len1)+result-'0'; if(result!=0){ if(sum>9){ result=1; s=String.valueOf(sum%10)+s; }else{ s=String.valueOf(sum%10)+s; result=0; } }else{ s=num1.substring(0,len1+1)+s; result=0; break; } } if(len1>=0&&len2>=0){ sum=num1.charAt(len1)+num2.charAt(len2)+result-2*'0'; if(sum>9){ result=1; s=String.valueOf(sum%10)+s; }else{ s=String.valueOf(sum)+s; result=0; } } len1--; len2--; } if(result!=0){ s=Integer.toString(result)+s; } return s; } }