剑指offer——二进制加减法
生活随笔
收集整理的這篇文章主要介紹了
剑指offer——二进制加减法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
給定兩個 01 字符串a(chǎn)和b,請計算它們的和,并以二進制字符串的形式輸出。
輸入為 非空 字符串且只包含數(shù)字1和0。
示例1:
輸入: a = "11", b = "10"
輸出: "101"
示例2:
輸入: a = "1010", b = "1011"
輸出: "10101"
提示:
每個字符串僅由字符 '0' 或 '1' 組成。
1 <= a.length, b.length <= 10^4
字符串如果不是 "0" ,就都不含前導(dǎo)零。
題解:
注意區(qū)分字符串賦值 a[i]='0';
字符串開始位置:a.length()-1;
字符串反轉(zhuǎn):
reverse(res.begin(), res.end());
字符串拼接:
res.push_back('0' + sum % 2);//在其后填0
1 class Solution {
2 public:
3 string addBinary(string a, string b) {
4 string res="";
5 int la=a.length()-1;
6 int lb=b.length()-1;
7 int maxx=max(la,lb);
8 int k=0,i=la,j=lb;
9 while(i>=0||j>=0)
10 {
11 int ca=i>=0?a[i--]-'0':0;
12 int cb=j>=0?b[j--]-'0':0;
13 int now=ca+cb+k;
14 k=now>=2?1:0;
15 res.push_back('0' + now% 2);
16 }
17 if (k != 0) res.push_back('0' +k);
18 reverse(res.begin(), res.end());
19 return res;
20 }
21 };
總結(jié)
以上是生活随笔為你收集整理的剑指offer——二进制加减法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第六章 应用逻辑顺序
- 下一篇: NBA篮球英语词汇英汉对照