思路:
先将两个字符串反转,然后对齐字符串的每一位,怎么个对齐法呢?就是反转后的字符串,短的字符串在最后面补0,补到和长字符串长度一样为止。然后再将字符串的每一位相加,相加时注意每一次都要加上进位数,进位数再前一位可以算出来,当每一位都加完的时候,此时需要一个判断,此时的进位数是否为0,如果不为0.则需要在最后的结果加上它,最后将结果反转回去然后再返回即可。
import java.util.*; public class Solution { public String solve (String s, String t) { // write code here int ls = s.length(); int lt = t.length(); String s1 = reverse(s); String t1 = reverse(t); int maxLen = ls>lt ? ls:lt; if(ls > lt){ for(int i = lt; i < ls; i++){ t1 += "0"; } }else{ for(int i = ls; i < lt; i++){ s1 += "0"; } } StringBuffer res = new StringBuffer(); //存放返回结果 int ans = 0; //进位 for(int i = 0; i < maxLen; i++){ int sum = Integer.parseInt(s1.charAt(i)+"") + Integer.parseInt(t1.charAt(i)+"")+ans; res.append(sum%10); ans = sum/10; //求出进位数 } if(ans > 0){ res.append(ans); } return reverse(new String(res)); } //反转字符串 public String reverse(String str){ char[] chars = str.toCharArray(); int l = 0, r = chars.length-1; while(l < r){ char c = chars[l]; chars[l] = chars[r]; chars[r] = c; l++; r--; } return new String(chars); } }