leetcode 二进制求和 addBinary
生活随笔
收集整理的這篇文章主要介紹了
leetcode 二进制求和 addBinary
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述:
給定兩個二進制字符串,返回他們的和(用二進制表示)。
輸入為非空字符串且只包含數字?1?和?0。
示例?1:
輸入: a = "11", b = "1" 輸出: "100"示例?2:
輸入: a = "1010", b = "1011" 輸出: "10101"分析:在完成代碼之前,我們首先看看這一題應該是一個什么樣子的思路。首先,輸入兩個字符串a和b,如果兩個字符串中元素個數不相等,我們應該天添加0使其位數相等,方便進行運算,涉及到元素個數,所以我們應該在最開始求出各個字符串中的長度。由于字符串中的元素1和0不是數字1和0,故按照ASCII碼表,我們應該把它轉換成數字,a[i]-'0'。最后我們還需要一個進位標志,如果a[i]和b[j]都為1,則需要進位。
代碼如下
class Solution { public:string addBinary(string a, string b) {string result; //用來存放結果int a_len = a.size(); //字符串的長度int b_len= b.size();int n = max(a_len, b_len);bool carry = false; //進位標志if (a_len > b_len) {for (int i = 0; i < a_len - b_len; ++i) b.insert(b.begin(), '0'); //在前面位 //置加0使兩個字符串長度相等}else if (a_len < b_len) {for (int i = 0; i < b_len - a_len; ++i) a.insert(a.begin(), '0');}for (int i = n - 1; i >= 0; --i) {int tmp = 0;if (carry) tmp = (a[i]-'0') + (b[i]-'0') + 1; //字符串中的0表示十進制數48,所 //以應該減去‘0’才能表示數字1else tmp = (a[i]-'0' ) + (b[i]-'0');if (tmp == 0) {result.insert(result.begin(), '0'); carry = false;}else if (tmp == 1) {result.insert(result.begin(), '1');carry = false;}else if (tmp == 2) {result.insert(result.begin(), '0');carry = true;}else if(temp==3){result.insert(result.begin(), '1');carry=false;}}if (carry) result.insert(result.begin(), '1');return result;} };?
總結
以上是生活随笔為你收集整理的leetcode 二进制求和 addBinary的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 煮鸡蛋的功效与作用、禁忌和食用方法
- 下一篇: 反转字符串中的单词 III leetco