• LeetCode 67 Add Binary


    好久不写博客了,最近有跳槽的打算,所以打算重新刷一遍LeetCode,顺便在这里做一点笔记

    https://leetcode.com/problems/add-binary/

    #67 的Add Binary,大意就是使用string的方式实现两个二进制字符串的加法,思路很简单,先寻找到较长的那个字符串,之后开始从两个字符串的尾部遍历做加法,之所以需要考虑较长字符串,是因为存在1111 + 10这样的情况

    使用vector存放最后的输出结果

     1 #define max(a,b) (((a) > (b)) ? (a) : (b))
     2 #define min(a,b) (((a) < (b)) ? (a) : (b))
     3 
     4 class Solution {
     5 public:
     6     string addBinary(string a, string b) {
     7         int max_len = max(a.length(), b.length());
     8         int min_len = min(a.length(), b.length());
     9         int carry = 0, temp = 0;
    10         int index;
    11         vector<char> ret;
    12         string *long_binary;
    13         string *shot_binary;
    14         if (max_len == a.length()){
    15             long_binary = &a;
    16             shot_binary = &b;
    17         }
    18         else{
    19             long_binary = &b;
    20             shot_binary = &a;
    21         }
    22         for (int index = 1; index <= max_len; index++){
    23             if (index > min_len){
    24                 temp = carry + ((*long_binary)[max_len - index] - '0');
    25             }
    26             else{
    27                 temp = carry + ((*long_binary)[max_len - index] - '0') + ((*shot_binary)[min_len - index] - '0');
    28             }
    29             carry = 0;
    30             if (temp == 2){
    31                 temp = 0;
    32                 carry = 1;
    33             }
    34             else if (temp == 3){
    35                 temp = 1;
    36                 carry = 1;
    37             }
    38             ret.insert(ret.begin(), '0' + temp);
    39         }
    40         if (carry == 1)
    41             ret.insert(ret.begin(), '1');
    42         string result;
    43         result.insert(result.begin(), ret.begin(), ret.end());
    44         return result;
    45     }
    46 };
  • 相关阅读:
    【664】日常记录
    【663】dataframe 删掉指定行或者列
    【662】TensorFlow GPU 相关配置
    【661】Python split 指定多个分隔符
    【660】TensorFlow 或者 keras 版本问题
    FFMPEG视音频编解码
    cpplint中filter参数
    升级pip之后出现sys.stderr.write(f“ERROR: {exc}“)
    特征点三角化恢复3D点
    VIO——陀螺仪零偏估计
  • 原文地址:https://www.cnblogs.com/chrischeng/p/5705992.html
Copyright © 2020-2023  润新知