(java)leetcode415 字串相加(兩個整數儲存成字串的形式,對它們求和)(Add String)
阿新 • • 發佈:2018-11-01
題目描述:
給定兩個字串形式的非負整數 num1
和num2
,計算它們的和。
注意:
num1
和num2
的長度都小於 5100.num1
和num2
都只包含數字0-9
.num1
和num2
都不包含任何前導零。- 你不能使用任何內建 BigInteger 庫, 也不能直接將輸入的字串轉換為整數形式。
解題思路:
題目明確要求不能將字串轉成int,不然這題毫無意義。解題思路和二進位制的字串相加一模一樣,挨個取出數字相加,逢10進1,不夠位補0參與計算。
程式碼實現(java):
class Solution { public String addStrings(String num1, String num2) { StringBuilder sb=new StringBuilder(); //表示向前進一位 int pre=0; while(num1.length()!=num2.length()){ if(num1.length()>num2.length()) num2="0"+num2; else num1="0"+num1; } char[] c1 = num1.toCharArray(); char[] c2 = num2.toCharArray(); for(int i=num1.length()-1;i>=0;i--){ int m=c1[i]-'0'; int n=c2[i]-'0'; int temp=m+n+pre; if(temp>=10){ sb.append(temp-10); pre=1; } else{ sb.append(temp); pre=0; } } if(pre==1) sb.append('1'); return sb.reverse().toString(); } }
補充:這個程式碼提交後的執行速度位32ms,後來我找了排名靠前的程式碼,提交後,發現速度也沒有排名中那麼好,不知道他這個是怎麼回事,而且相同的程式碼提交兩次也會有不同。