题解 | #大数加法#
大数加法
http://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475
模拟手算求大数加法,效率超97%,空间超99%
public String solve (String s, String t) { // 定义一个结果数组 int i = Math.max(s.length(),t.length()); char[] arr = new char[i+1]; //定义两个遍历字符串的指针 int p1 = s.length()-1; int p2 = t.length()-1; //定义一个进位变量 int carry = 0; //按位求和 while(i >= 1){ int x1=0, x2=0; if(p1 >= 0){ x1 = s.charAt(p1)-'0'; p1--; } if(p2 >= 0){ x2 = t.charAt(p2)-'0'; p2--; } int sum = x1 + x2 + carry; //求和 int r = sum % 10; //求余数 carry = sum / 10; //求进位 arr[i] = (char)(r +'0'); //保存余数 i--; //计算下一个值 } if(carry != 0){ //判断一下最后有没有进位 arr[0] = (char)(carry+'0'); return new String(arr); }else{ return new String(arr,1,arr.length-1); } }