思路:

先将两个字符串反转,然后对齐字符串的每一位,怎么个对齐法呢?就是反转后的字符串,短的字符串在最后面补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);
    }
}