题解 | #大数加法#
大数加法
http://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 计算两个数之和
* @param s string字符串 表示第一个整数
* @param t string字符串 表示第二个整数
* @return string字符串
*/
public String solve (String s, String t) {
// write code here
// 定义两个字符串的长度
int sLen = s.length();
int tLen = t.length();
// 定义和的数字的长度
int sumLen = Math.max(sLen,tLen) + 1;
// 定义和数组
char[] sumArray = new char[sumLen];
// 初始化元素
for(int i = 0 ; i < sumLen; i++){
sumArray[i] = '0';
}
// 定义sum指针
int sumIndex = sumLen -1;
// 定义和
int sum = 0;
sLen--;
tLen--;
while(sLen >=0 && tLen >=0){
// 求和 两个数的和加上进位
sum = (s.charAt(sLen--)-'0') + (t.charAt(tLen--) - '0') + sumArray[sumIndex] - '0';
// 求该位结果
sumArray[sumIndex--] =(char)((sum % 10) + '0');
// 求进位
sumArray[sumIndex] =(char) (sum / 10 + '0');
}
while(sLen >= 0){
sum = (s.charAt(sLen--) - '0') + sumArray[sumIndex] - '0';
sumArray[sumIndex --] = (char)((sum % 10) + '0');
sumArray[sumIndex] =(char) (sum / 10 + '0');
}
while(tLen >= 0){
sum = (t.charAt(tLen--) - '0') + sumArray[sumIndex] - '0';
sumArray[sumIndex --] = (char)((sum % 10) + '0');
sumArray[sumIndex] =(char) (sum / 10 + '0');
}
if(sumArray[0] == '0'){
return new String(sumArray,1,sumLen-1);
}else{
return new String(sumArray,0,sumLen);
}
}
}