题目:
输入string a, string b,求a和b的和,并且将和也用string型式返回。
分析:
来自F的面试题,编程基本功练习。模拟加法,和leetcode上的这道题比较像。 知道如何把对string型的'9'和int型的9进行相互转换即可。
我的代码:
#ifndef Add_String_Solution_h
#define Add_String_Solution_h
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <queue>
#include <stack>
#include <cmath>
#include <algorithm>
using namespace std;
class Solution {
public:
string addBinary(string a, string b) {
int len_a=(int)a.length()-1;
int len_b=(int)b.length()-1;
if(a.empty())
return b;
if(b.empty())
return a;
int sum=0;
string res="";
while((len_a>=0)&&(len_b>=0)){
sum+=(a[len_a]-'0')+(b[len_b]-'0');
char tmp[2];
int tmp_sum=sum%10;
sprintf(tmp,"%d",tmp_sum); //int转char*
res=string(tmp)+res;//char*转string
sum=sum/10;
len_a--;
len_b--;
}
while(len_a>=0){
sum+=a[len_a]-'0';
char tmp[2];
int tmp_sum=sum%10;
sprintf(tmp,"%d",tmp_sum);
res=string(tmp)+res;
sum=sum/10;
len_a--;
}
while(len_b>=0){
sum+=b[len_b]-'0';
char tmp[2];
int tmp_sum=sum%10;
sprintf(tmp,"%d",tmp_sum);
res=string(tmp)+res;
sum=sum/10;
len_b--;
}
if(sum>0){
char tmp[2];
int tmp_sum=sum%10;
sprintf(tmp,"%d",tmp_sum);
res=string(tmp)+res;
}
return res;
}
};
#endif