目录
遵循二进制加法法则,如果俩者相加等于2那么就“逢2进1”。如果俩者相加不等于2,那么就还是相加的结果(无非是0+0=0或者0+1=1),如果最高位相加等于2,也依旧逢2进1。
字符转数字 char c int ret=c-'0'
数字转字符 int c char ret=c+'0'
那么我们有没有想过循环的结束条件是什么?我们要分三种情况来推断出来。
-
- class Solution {
- public:
- string addBinary(string a, string b) {
- string ret;
- int cur1=a.size()-1,cur2=b.size()-1,t=0;
- while(cur1>=0 || cur2>=0 || t)
- //因为最后t=1 的时候,虽然cur1和cur2到负数了,t还要加上
- {
- if(cur1>=0) t+=a[cur1--]-'0';//字符转数字-
- if(cur2>=0) t+=b[cur2--]-'0';
- ret+=t%2+'0';//数字转字符+
- t/=2;
- }
- reverse(ret.begin(),ret.end());
- return ret;
- }
- };
我走的每一步都要心知肚明。