由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 求帮忙看看哪里有问题!
相关主题
请问怎么能把代码写得简洁?fb电话面试
能不能讨论一下kmp说好得FG面经,回馈板上GGJJ
贡献个facebook电话interviewf system design 地图搜索, 请教
Implement strStr() ?新鲜电面
strstr的复杂度和worst case是什么?报F和G的offer,分享面经和准备经验
三哥题刷的不赖啊G真的比FLA技术先进吗? (转载)
题目: string pattern matching w/ wildcard (.*)FB system design client 给 server 传输文件 的系统。 一个/多个clients <-> 一个/多个 server
string matching 需要看KMP 还有其他需要看的吗?面试问题请教:如何在字典中得到最长的复合词
相关话题的讨论汇总
话题: hash话题: haystack话题: int话题: mod话题: needle
进入JobHunting版参与讨论
1 (共1页)
J****3
发帖数: 427
1
Strstr() using Robin-Karp alg
large case 会有6个过不了。。求大牛帮我看下哪里有问题。
const int base = 26, mod = 997;

char *strStr(char *haystack, char *needle) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int l_h = strlen(haystack);
int l_n = strlen(needle);
if(l_n > l_h) return NULL;

int h_hash = 0, n_hash = 0;
for(int i = 0; i < l_n; i++){
n_hash = (n_hash*base + needle[i])%mod;
h_hash = (h_hash*base + haystack[i])%mod;
}
int j;
for(int i = l_n; i < l_h; i++){
if(n_hash == h_hash){
for(j = 0; j < l_n; j++){
if(haystack[i+j-l_n] != needle[j]){
break;
}
}
return &haystack[i-l_n];
}
h_hash -= (haystack[i - l_n]*static_cast(pow(base, l_n-1)))
%mod;
if(h_hash < 0){
h_hash += mod;
}
h_hash = (h_hash*base + haystack[i])%mod;

}
if(n_hash == h_hash){
for(j = l_h - l_n; j < l_h; j++){
if(haystack[j] != needle[j - (l_h - l_n)]){
break;
}
}
return &haystack[l_h - l_n];
}
return NULL;
}
J****3
发帖数: 427
2
发现问题出在这里 static_cast(pow(base, l_n-1)) 这里应该先%mod 一次
这里发现新问题, RK里的变量h 定义就是pow(d, length(pattern) - 1) %q 可我直接
用这个公式就会有问题, 用循环求H到可以全部pass。 求解释
1 (共1页)
进入JobHunting版参与讨论
相关主题
面试问题请教:如何在字典中得到最长的复合词strstr的复杂度和worst case是什么?
关于本版一些专业术语 (转载)三哥题刷的不赖啊
请问系统设计里的stateless和sticky session有冲突吗?题目: string pattern matching w/ wildcard (.*)
百度朝花夕拾string matching 需要看KMP 还有其他需要看的吗?
请问怎么能把代码写得简洁?fb电话面试
能不能讨论一下kmp说好得FG面经,回馈板上GGJJ
贡献个facebook电话interviewf system design 地图搜索, 请教
Implement strStr() ?新鲜电面
相关话题的讨论汇总
话题: hash话题: haystack话题: int话题: mod话题: needle