两个用大数相加(转化为字符串再相加)

来源:互联网 发布:java hashmap原理 编辑:程序博客网 时间:2024/05/20 11:52
#include <iostream>#include <string>#include <algorithm>using namespace std;string AddTwoString(string a, string b){reverse(a.begin(), a.end()); //把a,b翻转,以对齐低位reverse(b.begin(), b.end()); int sizeA = a.size();int sizeB = b.size();string ans = "";int plusBit = 0;int temp;for (int i = 0; i <= max(sizeA, sizeB); ++i){if (i < sizeA && i < sizeB) temp = a[i] - '0' + b[i] - '0' + plusBit;else if (i >= sizeA && i < sizeB) temp = b[i] - '0' + plusBit;else if (i < sizeA && i >= sizeB) temp = a[i] - '0' + plusBit;else if (i == max(sizeA, sizeB)){if (plusBit == 1) //对最后一位特殊处理ans.push_back(plusBit + '0');reverse(ans.begin(), ans.end());return ans;}if (temp >= 10)//对非最后一位的处理{plusBit = 1;temp -= 10;}else plusBit = 0;ans.push_back(temp + '0');}}void main(){string a = "999", b = "1";cout << AddTwoString(a, b);system("pause");}

0 0
原创粉丝点击