【leetcode】415. 字串相加(大整數相加)
阿新 • • 發佈:2018-12-14
#include<iostream> #include<string> #include<vector> using namespace std; string Add(string num1, string num2) { //保證a永遠是最長的那個字串 if (num1.size() < num2.size()) { string temp = num1; num1 = num2; num2 = temp; } //拿到a和b的索引 int ai = num1.size()-1; int bi = num2.size()-1; //用來存每位A和B的取值 int valueA = 0; int valueB = 0; //表示進位標誌 int flag = 0; //定義一個儲存結果的一維向量 vector<int> result; while (ai >= 0) { if (bi<0) { valueB = 0; } else { valueB = num2[bi]-48; bi--; } valueA = num1[ai] - 48; ai--; int sum = flag + valueA + valueB; //更新下一次的進位標誌 flag = sum / 10; result.push_back(sum % 10); } //處理最後進位問題 if (flag == 1) { result.push_back(1); } string output = ""; vector<int>::iterator it; for (it=result.begin();it!=result.end();it++) { output += to_string(*it); } //將得到的字串逆序 string _output(output.rbegin(), output.rend()); return _output; } int main() { string a, b; while(cin>>a>>b) { cout << Add(a, b) << endl; } return 0; }