网站建设是什么时间段申请域名,深圳整站seo,手表网站建设策划,如何用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;}
};