由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 这道题好像有点难
相关主题
C++ Q59: pointer & c-string (Bloomberg)几年前G家onsite的一道题
c++ 程序一问新人来报道,M家on-site 面经
这道题咋做?输入一个整数,返回它二进制 的1的个数
面经-facebook, amazon,telenav, quantcastGoogle Recruiter 面试
一道google电面题,估计挂了。。。T的一道电面题
C++ Q21: size of virtual table问一个经典题目
a silly question看看这道题
怎么快速找二进制的某一位是否0Amazon onsite面试的惨痛经历
相关话题的讨论汇总
话题: char话题: carry话题: int话题: bstradd话题: 道题
进入JobHunting版参与讨论
1 (共1页)
K******g
发帖数: 1870
1
二进制加法
/**
* i.e.
*
* char a[] = "11";
* char b[] = "1";
* char *c = bstradd(a, b); // c is a pointer to "100"
**/
你这道题看上去简单,但是写起来好像很麻烦。是一道FB的面试题。
d**e
发帖数: 6098
2
careercup 150 上面好像有道类似的,但就是十进制加法。
我下面的解法结果的最高位有可能为0,比如101 + 1结果会出现0110
#include
#include
using namespace std;
char badd(int x, int y, int & carry)
{
int z;
int v = x + y + carry;
if(v == 0)
{
z = 0;
carry = 0;
}
else if(v == 1)
{
z = 1;
carry = 0;
}
else if(v == 2)
{
z = 0;
carry = 1;
}
else
{
z = 1;
carry = 1;
}
return '0' + z;
}
char * bstradd(char * a, char * b)
{
char * c = 0;

【在 K******g 的大作中提到】
: 二进制加法
: /**
: * i.e.
: *
: * char a[] = "11";
: * char b[] = "1";
: * char *c = bstradd(a, b); // c is a pointer to "100"
: **/
: 你这道题看上去简单,但是写起来好像很麻烦。是一道FB的面试题。

x****k
发帖数: 2932
3
char badd(int x, int y, int & carry) 可以用lookup table实现。
可以将a和b中较短的一个先copy到c中,高位补0,然后再循环相加,这样可以节省一个
循环。
1 (共1页)
进入JobHunting版参与讨论
相关主题
Amazon onsite面试的惨痛经历一道google电面题,估计挂了。。。
C++ Q66: reverse a string -- is it efficientC++ Q21: size of virtual table
新手问个C++(Thinking in C++ source code)a silly question
问一下prefix tree (trie) 的题目怎么快速找二进制的某一位是否0
C++ Q59: pointer & c-string (Bloomberg)几年前G家onsite的一道题
c++ 程序一问新人来报道,M家on-site 面经
这道题咋做?输入一个整数,返回它二进制 的1的个数
面经-facebook, amazon,telenav, quantcastGoogle Recruiter 面试
相关话题的讨论汇总
话题: char话题: carry话题: int话题: bstradd话题: 道题