大数加法--
大数加法
http://www.nowcoder.com/questionTerminal/11ae12e8c6fe48f883cad618c2e81475
笨笨的做法
先反转,最好用StringBuilder
然后找到那个是最长的字符串,就在他身上修改
然后我们遍历比较短的字符串,每次两个字符相加。
大于10 那么给个boolean 让下一次的时候加1
小于10 那么直接把结果赋值到比较长的字符串的该位置
这个时候短的字符串全都加好了
但是可能长的字符串出现99999999
那么前面的boolean为true 就要给这些9999999加上1
加完之后还有可能又是true
那么append一个1
public static String solve (String s, String t) {
// write code here
int len1 = s.length();
int len2 = t.length();
StringBuilder str1;
StringBuilder str2;
int maxlen,minlen;
if(len1>len2){
str1 = new StringBuilder(s);
str2 = new StringBuilder(t);
maxlen = len1;
minlen = len2;
}else{
str1 = new StringBuilder(t);
str2 = new StringBuilder(s);
maxlen = len2;
minlen = len1;
}
//这个时候我们知道str1是最长的
str1.reverse();
str2.reverse();
boolean get = false;
for(int i=0;i<minlen;i++){
int temp = str1.charAt(i) - '0';
temp += str2.charAt(i) - '0';
temp += (get?1:0);
get = temp>=10?true:false;
str1.setCharAt(i,Character.forDigit(temp%10,10));
}
while(minlen<maxlen&&get==true){
int temp = str1.charAt(minlen) - '0';
temp += (get?1:0);
get = temp>=10?true:false;
str1.setCharAt(minlen,Character.forDigit(temp%10,10));
minlen++;
}
if(get==true){
str1.append('1');
}
return str1.reverse().toString();
}