八股 【字节面试手撕】大数加法 求解代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 public String solve(String s, String t) { // 如果第一个字符串为空/长度为0,直接返回第二个字符串 if(s.length()<=0){ return t; } // 如果第二个字符串为空/长度为0,直接返回第一个字符串 if(t.length()<=0){ return s; } int i = s.length()-1; int j = t.length()-1; // 定义进位变量tmp int tmp = 0; // 定义StringBuilder拼接结果 StringBuilder sb = new StringBuilder(); // 需要注意:最后一位相加仍有进位时,需把进位1也拼接到结果 while (i>=0||j>=0||tmp!=0) { tmp += i>=0?s.charAt(i--)-'0':0; tmp += j>=0?t.charAt(j--)-'0':0; // 取余10:得到当前位的计算结果 sb.append(tmp%10); // 除以10:更新进位值 tmp=tmp/10; } // 结果逆序:因为是从个位开始拼接,需要反转回正序,再转字符串返回 return sb.reverse().toString(); }