先反转,再相加,过程中记录一下进位
c++
class Solution {
public:
string solve(string s, string t) {
reverse(s.begin(),s.end());
reverse(t.begin(),t.end());
string ans = "";
int len = max(s.length(),t.length());
int d = 0;//记录进位
for(int i = 0 ; i < len ; i++)
{
int si= 0,ti = 0;
if(i<s.length()){
si = s[i]-'0';
}
if(i<t.length()){
ti = t[i]-'0';
}
ans+=(si+ti+d)%10+'0';
d = (si+ti+d)/10;
}
if(d) { ans+=d+'0'; }
reverse(ans.begin(),ans.end());
return ans;
}
};
java
import java.util.*;
public class Solution {
public String solve (String s, String t) {
StringBuffer s1 =new StringBuffer(s);
s1 = s1.reverse();
StringBuffer t1 =new StringBuffer(t);
t1 = t1.reverse();
StringBuffer ans =new StringBuffer();
int len = Math.max(s.length(),t.length());
int d = 0;//记录进位
for(int i = 0 ; i < len ; i++)
{
int si= 0,ti = 0;
if(i<s.length()){
si = s1.charAt(i)-'0';
}
if(i<t.length()){
ti = t1.charAt(i)-'0';
}
ans.append((char)((si+ti+d)%10+'0'));
d = (si+ti+d)/10;
}
if(d>0) { ans.append((char)(d+'0'));}
return ans.reverse().toString();
}
}
python
class Solution:
def solve(self , s , t ):
s = s[::-1]
t = t[::-1]
ans = ''
length = max(len(s),len(t));
#记录进位
d = 0
for i in range(length):
si = 0
ti = 0
if i<len(s):
si = int(s[i])
if i<len(t):
ti = int(t[i])
ans += str((si+ti+d)%10)
d = (si+ti+d)//10
if d>0:
ans += str(d)
return ans[::-1]
java和python语言里其实是自带高精度实现的
java
import java.util.*;
import java.math.BigInteger;
public class Solution {
public String solve (String s, String t) {
BigInteger S = new BigInteger(s);
BigInteger T = new BigInteger(t);
return S.add(T).toString();
}
}python
class Solution:
def solve(self , s , t ):
return int(s)+int(t)
京公网安备 11010502036488号