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

京公网安备 11010502036488号