一.题目解析算法解析:模拟我们需要知道字符和数字之间的转换,以及取到数的本位和进位:数字字符-数字:str-0数字-数字字符:str0本位:t%2(二进制,如果是十进制就是10)进位:t/2(二进制,如果是十进制就是10)模拟的过程就是两个指针遍历两个字符串,算出本位,进位存储进结果ret里面,结合代码画图即可理解二.代码编写:class Solution { public: string addBinary(string a, string b) { int t0;//算出每一位的本位和进位 int cur1a.size()-1;//两指针 int cur2b.size()-1; string ret; while(cur10||cur20||t0)//最后一个进位t10也也需要考虑 { if(cur10) ta[cur1]-0,cur1--;//数字与数字字符的转换 if(cur20) tb[cur2]-0,cur2--; rett%20; t/2; } reverse(ret.begin(),ret.end());//加法是从左向右的,但是我们写字符是从右向左的 return ret; } };