• leetcode 67


    67. Add Binary

    Given two binary strings, return their sum (also a binary string).

    For example,
    a = "11"
    b = "1"
    Return "100".

    两个字符串存储二进制数,进行二进制加法,返回相加之后的结果。

    代码如下:

      1 class Solution {
      2 public:
      3     string addBinary(string a, string b) {
      4         int flag = 0;
      5         int la = a.size() - 1;
      6         int lb = b.size() - 1;
      7         while(la >= 0 && lb >= 0)
      8         {
      9             if((int)(a[la]-'0') + (int)(b[lb]-'0') + flag > 1)
     10             {
     11                 if((int)(a[la]-'0') + (int)(b[lb]-'0') + flag == 3)
     12                 {
     13                     la > lb ? a[la] = '1' : b[lb] = '1';
     14                 }
     15                 else
     16                 {
     17                     la > lb ? a[la] = '0' : b[lb] = '0';
     18                 }
     19                 flag = 1;
     20             }
     21             else
     22             {
     23                 if((int)(a[la]-'0') + (int)(b[lb]-'0') + flag == 1)
     24                 {
     25                     la > lb ? a[la] = '1' : b[lb] = '1';
     26                 }
     27                 else
     28                 {
     29                     la > lb ? a[la] = '0' : b[lb] = '0';
     30                 }
     31                 flag = 0;
     32             }
     33             la --;
     34             lb --;
     35         }
     36         if(flag == 0)
     37         {
     38             return la > lb ? a : b;
     39         }
     40         if(a.size() > b.size() && flag == 1)
     41         {
     42             for(int j = a.size()-b.size()-1; j >= 0; j--)
     43             {
     44                 if((int)(a[j]-'0') + flag > 1)
     45                 {
     46                     if((int)(a[j]-'0') + flag == 3)
     47                     {
     48                         a[j] = '1';
     49                     }
     50                     else
     51                     {
     52                         a[j] = '0';
     53                     }
     54                     flag =1;
     55                 }
     56                 else
     57                 {
     58                     if((int)(a[j]-'0') + flag == 1)
     59                     {
     60                         a[j] = '1';
     61                     }
     62                     else
     63                     {
     64                         a[j] = '0';
     65                     }
     66                     flag = 0;
     67                     break;
     68                 }
     69             }
     70             if(flag == 1)
     71             {
     72                 return "1" + a;
     73             }
     74             return a;
     75         }
     76         else
     77         {
     78             for(int j = b.size()-a.size()-1; j >= 0; j--)
     79             {
     80                 if((int)(b[j]-'0') + flag > 1)
     81                 {
     82                     if((int)(b[j]-'0') + flag == 3)
     83                     {
     84                         b[j] = '1';
     85                     }
     86                     else
     87                     {
     88                         b[j] = '0';
     89                     }
     90                     flag =1;
     91                 }
     92                 else
     93                 {
     94                     if((int)(b[j]-'0') + flag == 1)
     95                     {
     96                         b[j] = '1';
     97                     }
     98                     else
     99                     {
    100                         b[j] = '0';
    101                     }
    102                     flag = 0;
    103                     break;
    104                 }
    105             }
    106             if(flag == 1)
    107             {
    108                 return "1" + b;
    109             }
    110             return b;
    111         }
    112     }
    113 };

     这样写代码太乱,可以先进行对齐操作,将短的字符串通过填充‘0’来使两个字符串长度相同。

  • 相关阅读:
    Windows Console 程序中定时器的使用
    AT91SAM7SE应用 IRQ
    AT91SAM7SE应用 PIT 周期中断(1ms)
    AT91SAM7SE应用 UART
    Modelsim图像处理算法的仿真——图像数据操作
    按照一定的间隔,从视频中截图并保存(OpenCV)
    MacBook Pro下关闭全局网络代理
    jmeter的HTTP取样器设置重连的次数
    【C#】比较 Random 与 RandomNumberGenerator 生成随机字符串
    KendoGrid基础
  • 原文地址:https://www.cnblogs.com/shellfishsplace/p/5857244.html
Copyright © 2020-2023  润新知