#include <iostream>
#include <string>
using namespace std;
/*
大数相加
*/
//在字符串前面加0 使2字符串长度相等 这样进行相加时的逻辑判断会较为简单
void formatStringWithZero(string& s, int n) {
for (int i = 0; i < n; i++) {
s = "0" + s;
}
}
string addTwoString(string s1, string s2) {
if (s1.size() > s2.size()) {
formatStringWithZero(s2, s1.size() - s2.size());
}
else {
formatStringWithZero(s1, s2.size() - s1.size());
}
string res = "";
int i, j;
i = j = s1.size() - 1;
int flag = 0;
while (i >= 0 && j >= 0) {
int n1 = s1[i--] - '0';
int n2 = s2[j--] - '0';
int r = (n1 + n2 + flag) % 10;
flag = (n1 + n2 + flag) / 10;
res = to_string(r) + res;
}
//最后flag为0或1 如果为1得加到res的最前端
if (flag) {
res = "1" + res;
}
return res;
}
大数相加---C++实现
最新推荐文章于 2022-03-15 20:56:32 发布