题解 | #大数加法#
大数加法
http://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) {
if(s==null || t==null || s.length() > 100000 || t.length() > 100000) return null;
//补齐两个字符串长度一样
char[] schars,tchars;
StringBuilder st = new StringBuilder();
if(s.length() > t.length()){
for(int i = s.length() - t.length();i>0;i--){
st.append("0");
}
st.append(t);
t = st.toString();
}else if(t.length() > s.length()){
for(int i = t.length() - s.length();i>0;i--){
st.append("0");
}
st.append(s);
s = st.toString();
}
schars = s.toCharArray();
tchars = t.toCharArray();
int i = schars.length - 1;
StringBuilder result = new StringBuilder();
int isThanTen = 0;
while(i>=0){
int res = schars[i] + tchars[i] - '0' + isThanTen - '0' ;
if(res >= 10) {
result.append(res > 10 ? (i == 0 ? res : res % 10) : (i == 0 ? "01" : res % 10));
isThanTen = 1;
} else {
result.append(res);
isThanTen = 0;
}
i--;
}
return result.reverse().toString();
}
}