zoukankan      html  css  js  c++  java
  • 剑指offer——二进制加减法

    给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。

    输入为 非空 字符串且只包含数字 1 和 0。

    示例 1:

    输入: a = "11", b = "10"
    输出: "101"
    示例 2:

    输入: a = "1010", b = "1011"
    输出: "10101"
     

    提示:

    每个字符串仅由字符 '0' 或 '1' 组成。
    1 <= a.length, b.length <= 10^4
    字符串如果不是 "0" ,就都不含前导零。

    题解:

    注意区分字符串赋值   a[i]='0';

    字符串开始位置:a.length()-1;

    字符串反转:

    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 };
  • 相关阅读:
    ARM中断(一)
    窗口置顶小工具
    volatile关键字
    IIC总线
    ARM中断(三)
    BootLoader —— S3C2440
    视频那些事
    [轉]簡單的顯示隱藏實現
    Apache Service Monitor Start按鈕变灰 的解决方法
    [转载]经典java转码程序,实现native2ascii命令行的功能
  • 原文地址:https://www.cnblogs.com/sylvia1111/p/15712782.html
Copyright © 2011-2022 走看看