• <Interview problem>二进制加法


          闲来无事,搜集一些有趣的面试题,以及解决方案,有些代码可能会自己写,

    有些网上有比较完整的方案了,就直接把代码拷贝过来,描述一下解题思路。

    Given two binary strings, return their sum (also a binary string).For example,
    a = "11"
    b = "1"
    Return "100".

    这个问题比较简单,跟普通加法其实差不多,需要考虑的是进位,加法的话需要从低位开始

    往高位加,这样的话,需要先将字符串反转一下,再开始加。下面是网上找来的C++代码:

     1 #include <iostream>
     2 #include <string>
     3 using namespace std;
     4 
     5 string addBinary(string a, string b)
     6 {
     7     if(a.empty()) return b;
     8     if(b.empty()) return a;
     9     reverse(a.begin(),a.end());
    10     reverse(b.begin(),b.end());
    11     int carry = 0;
    12     string result;
    13     for(int i = 0; i < max(a.size(),b.size());++i)
    14     {
    15         int aval = (i < a.size())?(a[i] - '0'):0;
    16         int bval = (i < b.size())?(b[i] - '0'):0;
    17         int sum = (aval + bval + carry)%2;
    18         carry = (aval + bval + carry)/2;
    19         result.insert(result.begin(),'0'+sum);
    20     }
    21     if(carry == 1)
    22     {
    23         result.insert(result.begin(),'1');
    24     }
    25     return result;
    26 }
    27 int main(){
    28     string a = "11";
    29     string b = "1";
    30     string result = addBinary(a,b);
    31     cout<<result<<endl;
    32     return 0;
    33 }
    View Code
  • 相关阅读:
    css 重新学习系列(1)
    sublime Text 使用
    值得收藏的前端大牛博客
    javascript中最常用的方法
    ie6,ie7兼容性总结
    jQuery学习笔记(二)
    jQuery学习笔记(一)
    php smarty
    javascript DOM(2) 一个网页上切换显示不同的图片或文本
    effective c++ 8: Prevent exceptions from leaving destrctors
  • 原文地址:https://www.cnblogs.com/cstar/p/3353413.html
Copyright © 2020-2023  润新知