由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 面试题palindrome
相关主题
请教这道回文题目怎么做?求教一道面试题
请教一道G家面试题问道关于快速找bucket的面试题
请教一道面试题一道巨常见的题
最长回文串#面试题#有100个database,每个存1 million data,如何求出median number of 这些数。
Amazon 第一轮电话面试一道google的面试题.
stream palindrome寻找下一个回文数
VMWare String新花样回文数的问题
几道微软面试题palindrome partioning II
相关话题的讨论汇总
话题: palindrome话题: 数据话题: file话题: m2话题: hash
进入JobHunting版参与讨论
1 (共1页)
v******a
发帖数: 54
1
一个char stream
byte b=read() 从网络接收数据
怎么判读stream是palindrome?
stream可能是很大,内存可能放不下
s*********t
发帖数: 1663
2
先存到硬盘上,读完了再判断

【在 v******a 的大作中提到】
: 一个char stream
: byte b=read() 从网络接收数据
: 怎么判读stream是palindrome?
: stream可能是很大,内存可能放不下

M********5
发帖数: 715
3
还没来得及仔细想,intuitive的想法是
先把所有的数据保存下来,保存到文件里面
然后,比如你的内存是nM的,取出文件的开头n/2 M和结尾的n/2 M
然后这样子一点一点的比较?
k*n
发帖数: 150
4
出题人的意思似乎是要随时判断?到当前这个byte为止是不是一个回文?

【在 M********5 的大作中提到】
: 还没来得及仔细想,intuitive的想法是
: 先把所有的数据保存下来,保存到文件里面
: 然后,比如你的内存是nM的,取出文件的开头n/2 M和结尾的n/2 M
: 然后这样子一点一点的比较?

v******a
发帖数: 54
5
yes

【在 k*n 的大作中提到】
: 出题人的意思似乎是要随时判断?到当前这个byte为止是不是一个回文?
M********5
发帖数: 715
6
那思想其实也是差不多得嘛。。。至少我这样子认为
反正如果接收的数据很大,就要先存到硬盘上去
如果说要随时判断,那么就分点内存用做算法,另外的内存继续读数据?
k*n
发帖数: 150
7
睡觉了,躺床上想去。。。

【在 M********5 的大作中提到】
: 那思想其实也是差不多得嘛。。。至少我这样子认为
: 反正如果接收的数据很大,就要先存到硬盘上去
: 如果说要随时判断,那么就分点内存用做算法,另外的内存继续读数据?

i***1
发帖数: 95
8
很有意思的题目。。。
我有个idea,如果一个串是palindrome,那么对它的hash,从头到尾,和从尾到头是一
样的。
譬如用这样的hash方法。
int hash(char a[], int n)
{
int res = 0;
for(int i=0;i res = ((res*37)+(int)char[i])%3137;
}
在扫描的同时,保存另一个hash值。(和上面的hash方法要有点变化)
在此基础上,可以用bloom filter的方法,减少false positive的可能性。
g****n
发帖数: 431
9
从头到尾hash可以累积计算,但从尾到头需要重读一遍已经接受的数据。如果每接受一
个byte,都读一
遍整个数据,时间是n^2,而且题目说数据很大内存放不下,那么对这么大的数据n^2时
间可能太长了

【在 i***1 的大作中提到】
: 很有意思的题目。。。
: 我有个idea,如果一个串是palindrome,那么对它的hash,从头到尾,和从尾到头是一
: 样的。
: 譬如用这样的hash方法。
: int hash(char a[], int n)
: {
: int res = 0;
: for(int i=0;i: res = ((res*37)+(int)char[i])%3137;
: }

g****n
发帖数: 431
10
clarify一下题目:不断从网络接收一个stream,要求判断对于当前接受到的数据,是
否为回文,且当
前接受的数据很大,内存装不下。如果题目是这样:
判断回文至少要O(n)时间,遍历已有数据不能避免,那么可以想办法在必须遍历的时候
,才去遍历。可以
有2个条件:
1. 对于接受到的每个字符,用计数器记录出现的次数。回文的必要条件是所有字符的
个数都为偶数(可以有一个奇数)。
2. 开2个m大小的cache在内存中。第一个保存数据最开始的m个字符,第二个保存最后m
个字符(可以用
环形数组实现)。回文的必要条件是2个cache互为回文。
每接收到一个字符,如果上面2个条件满足,那么遍历整个已有数据,判断是否回文。
如果m开得比较大,
那么浪费的时间会非常小。

【在 v******a 的大作中提到】
: 一个char stream
: byte b=read() 从网络接收数据
: 怎么判读stream是palindrome?
: stream可能是很大,内存可能放不下

相关主题
stream palindrome求教一道面试题
VMWare String新花样问道关于快速找bucket的面试题
几道微软面试题一道巨常见的题
进入JobHunting版参与讨论
h**k
发帖数: 3368
11
有人有思路么?

【在 v******a 的大作中提到】
: 一个char stream
: byte b=read() 从网络接收数据
: 怎么判读stream是palindrome?
: stream可能是很大,内存可能放不下

g******d
发帖数: 511
12
要考虑两种情况:
AABAA
AABB
对了,iq351,recurtier说了多长时间才可以申请GOOG?
g******d
发帖数: 511
13
先分bucket存,数据流结束后,就知道最中间数的在那个bucket,然后双向比较.可以
concurrent比较所有的buckets.
h**k
发帖数: 3368
14
用bucket存前面的元素,不会破坏元素顺序么?

【在 g******d 的大作中提到】
: 先分bucket存,数据流结束后,就知道最中间数的在那个bucket,然后双向比较.可以
: concurrent比较所有的buckets.

g******d
发帖数: 511
15
我这个bucket说错了,实际应该是多个文件.
something like
File A (从后到前) == File B (offset x) + File B next (0)
B需要读一部分下一个文件.

【在 h**k 的大作中提到】
: 用bucket存前面的元素,不会破坏元素顺序么?
h**k
发帖数: 3368
16
那就是还要保存前面所有的元素。如果内存不允许的话,有办法么?

【在 g******d 的大作中提到】
: 我这个bucket说错了,实际应该是多个文件.
: something like
: File A (从后到前) == File B (offset x) + File B next (0)
: B需要读一部分下一个文件.

p********7
发帖数: 549
17
先把可以用的内存分成5部分,每个部分占用Km空间。
先把数据读入M1并且从2头到中间来判断
M1满了,存M2,并且M1从头开始,M2从尾开始判断
M2满了,存M3.新的数据继续读到M3.
M3满了,就把M2存到file1.然后新的数据读到M2.
M2满了,就把M3存file2,读新的数据到M3.
如果M1,和M2,M3的数据都没问题,需要读file的文件继续判断,就把需要的file读到
M4,M5
file的数序是从2头到中间。
1 (共1页)
进入JobHunting版参与讨论
相关主题
palindrome partioning IIAmazon 第一轮电话面试
这道难不难?stream palindrome
一道面试题:数组 in-place shuffleVMWare String新花样
发uber电面面经,求onsite面经和建议几道微软面试题
请教这道回文题目怎么做?求教一道面试题
请教一道G家面试题问道关于快速找bucket的面试题
请教一道面试题一道巨常见的题
最长回文串#面试题#有100个database,每个存1 million data,如何求出median number of 这些数。
相关话题的讨论汇总
话题: palindrome话题: 数据话题: file话题: m2话题: hash