大数加法
维护一个进位标志符carry,利用stringBuilder一位一位append,最后reverse。
https://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */ public String solve (String s, String t) { //i, j分别保存两个字符串的长度 int i = s.length() - 1; int j = t.length() - 1; int m1 = 0, m2 = 0, carry = 0; StringBuilder sb = new StringBuilder(); while(i >= 0 || j >= 0){ if(i >= 0) m1 = s.charAt(i) - '0'; else m1 = 0; if(j >= 0) m2 = t.charAt(j) - '0'; else m2 = 0; int sum = m1 + m2 + carry; carry = sum / 10; //为什么要这样写? //一位数+'0'转换成了ASCII码值,比如1+'0'=49 //再将ASCII码值转为字符,在前面装置转换 sb.append((char)(sum%10 + '0')); i --; j --; } if(carry != 0) sb.append('1'); sb.reverse(); return sb.toString(); } }