1

分享

67. Add Binary(C++)

67. Add Binary、LeetCode、String
筆記

String

  • #include <string>
存取字符 []
  

str[0]

字串長度
  

str.length();

刪除指定位置
  

str.erase(i)

int轉string
  

std::to_string(?);

string轉int
  • stoi :string 轉 int
  • stof :string 轉 float
  • stol :string 轉 long
  

std::stoi("101");

最大值
  • 標頭檔:#include <algorithm>
  

std::max(a,b);

字串反轉
  • 標頭檔:#include <algorithm>
  

std::reverse(str.begin(), str.end());

67. Add Binary

題目:給定兩個二進位字串 a 和 b,將它們的和作為二進位字串返回。
回傳:兩個二進位相加後的字串
例如1:
Input: a = "11", b = "1"
  

Output: "100"

例如2:
Input:a = "1010", b = "1011"
  

Output: "10101"

例如3:
Input: 
a="10100000100100110110010000010101111011011001101110111111111101000000101111001110001111100001101"
b="110101001011101110001111100110001010100001101011101010000011011011001011101111001100000011011110011"
  

Output: 110111101100010011000101110110100000011101000101011001000011011000001100011110011010010011000000000

Code

  

#include <iostream>

#include <string>

#include <algorithm>// std::max

using namespace std;

string addBinary(string a, string b) {

    int i = a.length() - 1;

    int j = b.length() - 1;

    int max = std::max(i,j);


    int carry = 0;// 進位紀錄

    string ans;// 答案紀錄

    while (i >= 0 || j >= 0) {

        int sum = carry;

        string num;// 存尾數

        if (i >= 0){

            num= a[i];

            sum += stoi(num);

            a.erase(i);// 刪除a尾數

            i--;

        }


        if (j >= 0) {

            num= b[j];

            sum += stoi(num);

            b.erase(j);// 刪除b尾數

            j--;

        };

        ans += to_string(sum % 2);// 紀錄答案

        carry = sum / 2;// 進位

    }


    if (carry != 0){

        ans += to_string(carry);// 最後的進位

    }

    std::reverse(ans.begin(), ans.end());// 字串反轉

    return ans;

}

int main(){

    cout<<addBinary("11", "1")<<endl;

}

筆記 string leetcode

67. Add Binary

Output
  

100



參考資料

[1]. C++中int与string的相互转换_沉默的时光-CSDN博客_c++ int转string
[2]. 二進位轉十進位,十進位轉二進位的演算法 - LabVIEW - LabVIEW360論壇
[3]. [Day 9] 從LeetCode學演算法 - 0067. Add Binary (Easy) - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天 (ithome.com.tw)
[4]. to_string - C++ Reference (cplusplus.com)
[5]. max - C++ Reference (cplusplus.com)
[6]. std::reverse - cppreference.com
[5]. C++字串反轉 @ 佑佑的語言 :: 痞客邦 :: (pixnet.net)
#筆記  #string  #leetcode 
分類:學習

【關鍵字】:新手教學、Leetcode ; 【分類】:學習、理財。(目前C++新手教學第二章內容已完結)。建議或意見可私訊:https://reurl.cc/ze7L9k。文章有錯誤的地方還請留言指正,謝謝各位

評論
上一篇
  • 66. Plus One(C++)
  • 下一篇
  • 更多文章
    載入中... 沒有更多了