由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Leetcode OJ的编译器是?
相关主题
求STRING COMPRESSION一题C++解法(CC150 1.5)这段代码在leetcode上面跑不了??
leetcode-- scramble string报一个F 家面经
reverse words in a string如果用FP去面试是不是inplace的算法可以完全抛弃了?
问一道uber onsite题目GOOG intern interview 题目
map numbers to strings请教一个bloomberg题目
请教一道题目攒人品 报BB面经
贡献一道G家的面试题c++ 程序一问
帮忙看看为撒 leetcode OJ time out "Substring with Concatenation of All Words "【一个BB公司问的字母排序的问题】
相关话题的讨论汇总
话题: string话题: count1话题: count2话题: res话题: length
进入JobHunting版参与讨论
1 (共1页)
i*********7
发帖数: 348
1
同样的题目我把leetcode oj上的sample放到我自己的IDE上跑就没问题,但是在
leetcode oj上却跑出来了奇怪的结果。。这是为啥?
i**********e
发帖数: 1145
2
把你代码贴上来,我可以直接告诉你哪里出了问题。
i*********7
发帖数: 348
3
哇。leetcode大神直接来回复我。。。orz...
是那题 add binary的。你的test cases里面有25%左右过不了。
但是我把那些过不了的test case放到我自己的x-code ide上,又得到和你expected一
样的答案。
string addBinary(string a, string b) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int next = 0;
int length = max(a.size(),b.size());
char *res = new char[length + 1];
memset(res,0,length);
int count1,count2;
count1 = a.size() - 1;
count2 = b.size() - 1;
while(count1 >= 0 || count2 >= 0)
{
int b1,b2;
b1 = b2 = 0;
if(count1 >= 0)
b1 = a[count1] - '0';
if(count2 >= 0)
b2 = b[count2] - '0';
int curbit = b1+b2+next;
next = curbit/2;
curbit = curbit%2;
res[length] = curbit + '0';
length--;
count1--;
count2--;
}
if(next == 1){
res[0] = '1';
string s(res);
return s;
}
else{
string s(res + 1);
return s;
}
}

【在 i**********e 的大作中提到】
: 把你代码贴上来,我可以直接告诉你哪里出了问题。
h**6
发帖数: 4160
4
res没有截止符的空间,res截止符没有赋0,res没有释放内存。
char *res = new char[length + 2];
memset(res, 0, length + 2);
delete []res;
delete []res;
i*********7
发帖数: 348
5
memset就已经帮所有可能的位置都赋上了截止符了。
length是max(x,y)
也就是两者取长了。两个二进制数相加的长度基本不可能超过length + 1了。
举个简单的例子
10 + 10 = 100。 也就是两个长度为2的二进制数相加才刚好到达长度为3的二进制数。
所以一个二进制数长度为x,另一个为y。
最大长度不会超过max(x,y) + 1。
所以我取length + 2就是在最大可能值的max(x,y) + 1的前提下再给了最后一位截止符
的空间。

【在 h**6 的大作中提到】
: res没有截止符的空间,res截止符没有赋0,res没有释放内存。
: char *res = new char[length + 2];
: memset(res, 0, length + 2);
: delete []res;
: delete []res;

h****e
发帖数: 928
6
小评一下:这是用C的风格写的C++程序。例如这一段:
char *res = new char[length + 1];
memset(res,0,length);
为什么不直接用
string res(length+1, '\0');
p*g
发帖数: 141
7
同意
1. 我試了一下樓主的程序
OJ上large test裡 出錯的情況都是輸出的string 最後有幾個其他字符
感覺是內存釋放問題?
2. 如果用c++ 的string,
直接用下面這樣的 ,
當然, 其他高手可能有更好的辦法;
string rv;
int next = 0;
int length = max(a.size(),b.size());
int count1,count2;
count1 = a.size() - 1;
count2 = b.size() - 1;
while(count1 >= 0 || count2 >= 0)
{
int b1,b2;
b1 = b2 = 0;
if(count1 >= 0)
b1 = a[count1] - '0';
if(count2 >= 0)
b2 = b[count2] - '0';
int curbit = b1+b2+next;
next = curbit/2;
curbit = curbit%2;
rv.insert(rv.begin(), (char)( curbit + '0'));
length--;
count1--;
count2--;
}
if(next == 1){
rv.insert(rv.begin(), '1');
}

return rv;

【在 h****e 的大作中提到】
: 小评一下:这是用C的风格写的C++程序。例如这一段:
: char *res = new char[length + 1];
: memset(res,0,length);
: 为什么不直接用
: string res(length+1, '\0');

i*********7
发帖数: 348
8
我明白你的意思。
我只是考虑到一个问题
实际上string 是 Immutable的,也就是你对它做任何改动,都不是inplace的,只是产
生一个新的改动过的复制品。
这样比能实际inplace操作的char数组要慢的多和浪费空间的多。
所以我先从char array操作,最后直接通过操作得来的char array直接创造一个string
。这样应该会效率很多。

【在 h****e 的大作中提到】
: 小评一下:这是用C的风格写的C++程序。例如这一段:
: char *res = new char[length + 1];
: memset(res,0,length);
: 为什么不直接用
: string res(length+1, '\0');

y*******g
发帖数: 6599
9
java string是immutable的
我没看错的话,你用的是c++ string?

string

【在 i*********7 的大作中提到】
: 我明白你的意思。
: 我只是考虑到一个问题
: 实际上string 是 Immutable的,也就是你对它做任何改动,都不是inplace的,只是产
: 生一个新的改动过的复制品。
: 这样比能实际inplace操作的char数组要慢的多和浪费空间的多。
: 所以我先从char array操作,最后直接通过操作得来的char array直接创造一个string
: 。这样应该会效率很多。

i*********7
发帖数: 348
10
我怎么记得programming interview exposed上写的c++的string同样也是Immutable的
。。。

【在 y*******g 的大作中提到】
: java string是immutable的
: 我没看错的话,你用的是c++ string?
:
: string

相关主题
请教一道题目这段代码在leetcode上面跑不了??
贡献一道G家的面试题报一个F 家面经
帮忙看看为撒 leetcode OJ time out "Substring with Concatenation of All Words "如果用FP去面试是不是inplace的算法可以完全抛弃了?
进入JobHunting版参与讨论
y*******g
发帖数: 6599
11
你试一下不就知道了。

【在 i*********7 的大作中提到】
: 我怎么记得programming interview exposed上写的c++的string同样也是Immutable的
: 。。。

h**6
发帖数: 4160
12
你只分配了length+1的空间,没有预留截止符的位置。
你没有对res最后一个字节赋0,这才是截止符的位置。

【在 i*********7 的大作中提到】
: memset就已经帮所有可能的位置都赋上了截止符了。
: length是max(x,y)
: 也就是两者取长了。两个二进制数相加的长度基本不可能超过length + 1了。
: 举个简单的例子
: 10 + 10 = 100。 也就是两个长度为2的二进制数相加才刚好到达长度为3的二进制数。
: 所以一个二进制数长度为x,另一个为y。
: 最大长度不会超过max(x,y) + 1。
: 所以我取length + 2就是在最大可能值的max(x,y) + 1的前提下再给了最后一位截止符
: 的空间。

i*********7
发帖数: 348
13
大哥我错了,原来好像是mutable的。。
我试了一下这两段代码
string a("abc");
cout<<&a< a = a + "bsdadsadasdasdc";
cout<<&a;
发现输出来的内存地址是一样的。

【在 y*******g 的大作中提到】
: 你试一下不就知道了。
i*********7
发帖数: 348
14
嗯。好像的确是自己大意了。
我回头改改再试试。
谢谢啦

【在 h**6 的大作中提到】
: 你只分配了length+1的空间,没有预留截止符的位置。
: 你没有对res最后一个字节赋0,这才是截止符的位置。

i**********e
发帖数: 1145
15
这是正解。
你看,只要贴代码,问题都被检测出来了。

【在 h**6 的大作中提到】
: res没有截止符的空间,res截止符没有赋0,res没有释放内存。
: char *res = new char[length + 2];
: memset(res, 0, length + 2);
: delete []res;
: delete []res;

p*g
发帖数: 141
16
但是std::string 是不需要terminator的
這樣直接把原來生成的char array生成一個string 然後返回
這樣為啥出錯呢

【在 i**********e 的大作中提到】
: 这是正解。
: 你看,只要贴代码,问题都被检测出来了。

k***x
发帖数: 6799
17
跪了,原来这位leetcode大佬是老中。。。

【在 i**********e 的大作中提到】
: 把你代码贴上来,我可以直接告诉你哪里出了问题。
B*******1
发帖数: 2454
18
我跪了,你才知道啊。

【在 k***x 的大作中提到】
: 跪了,原来这位leetcode大佬是老中。。。
i**********e
发帖数: 1145
19
string ( const char * s );
Content is initialized to a copy of the string formed by the null-
terminated character sequence (C string) pointed by s. The length of the
character sequence is determined by the first occurrence of a null character
(as determined by traits.length(s)). This version can be used to initialize
a string object using a string literal constant.
http://www.cplusplus.com/reference/string/string/string/

【在 p*g 的大作中提到】
: 但是std::string 是不需要terminator的
: 這樣直接把原來生成的char array生成一個string 然後返回
: 這樣為啥出錯呢

S********t
发帖数: 3431
20
我还认识这位牛人,吃过几次饭,哈哈哈

【在 B*******1 的大作中提到】
: 我跪了,你才知道啊。
相关主题
GOOG intern interview 题目c++ 程序一问
请教一个bloomberg题目【一个BB公司问的字母排序的问题】
攒人品 报BB面经问两个题
进入JobHunting版参与讨论
y*******g
发帖数: 6599
21
跪了

【在 S********t 的大作中提到】
: 我还认识这位牛人,吃过几次饭,哈哈哈
B*******1
发帖数: 2454
22
膜拜啊,希望有一天我也可以和大牛吃顿饭。

【在 S********t 的大作中提到】
: 我还认识这位牛人,吃过几次饭,哈哈哈
d**e
发帖数: 6098
23
re... me too...

【在 S********t 的大作中提到】
: 我还认识这位牛人,吃过几次饭,哈哈哈
1 (共1页)
进入JobHunting版参与讨论
相关主题
【一个BB公司问的字母排序的问题】map numbers to strings
问两个题请教一道题目
今天G家电面的一道题贡献一道G家的面试题
interview Qs collection帮忙看看为撒 leetcode OJ time out "Substring with Concatenation of All Words "
求STRING COMPRESSION一题C++解法(CC150 1.5)这段代码在leetcode上面跑不了??
leetcode-- scramble string报一个F 家面经
reverse words in a string如果用FP去面试是不是inplace的算法可以完全抛弃了?
问一道uber onsite题目GOOG intern interview 题目
相关话题的讨论汇总
话题: string话题: count1话题: count2话题: res话题: length