网站推广昔年下拉,微网站备案,泰州快速建站模板,wordpress主页幻灯片题目 67. 二进制求和 
翻译 
主要思路 
核心思路是像竖式计算一样#xff0c;不过需要将字符串a和b反转后逐位进行二进制计算得到字符串c#xff0c;最后再将c反转就是答案 
逐位计算的时候利用count#xff0c;在将a和b当前位置数字相加后通过模2来决定字符串c对应位置的数…题目 67. 二进制求和 
翻译 
主要思路 
核心思路是像竖式计算一样不过需要将字符串a和b反转后逐位进行二进制计算得到字符串c最后再将c反转就是答案 
逐位计算的时候利用count在将a和b当前位置数字相加后通过模2来决定字符串c对应位置的数字 
count / 2是清除了当前的进位同时保留了下一位的进位 
最后如果count不为0说明字符串c还要进一位 
第一次写错误 
代码 
class Solution {
public:string addBinary(string a, string b) {string ansString;   int scanlLength  max(a.size(), b.size());    //需要扫描的长度取两个字符串中最大值reverse(a.begin(), a.end());    //翻转两个字符串reverse(b.begin(), b.end());int count  0;  //count表示是否进位for(int i  0; i  scanlLength; i) {count  i  a.length() ? (a.at(i)  1) : 0;  //count 上递增如果i还小于字符串a的长度看字符串a当前位置是不是1如果是1a.at(i)  1返回1则count递增1否则递增0下面一条语句同理 count  i  b.length() ? (b.at(i)  1) : 0;ansString.push_back((count % 2) ? 1 : 0);   //count表示当前位计算结果如果count % 2  0说明要么计算结果是0不用进位当前位就是0要么计算结果是2如果是1要么计算结果是3要进位进位后是1要么计算结果是1不用进位count / 2;     //保留了下一位的进位}if(count) { //如果count不为0表示还要往下进一位ansString.push_back(1);}reverse(ansString.begin(), ansString.end());return ansString;}
};