大数加法--
大数加法
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(); }