代码理解问题
Code understanding Question
我在网上浏览了一段代码。
我不明白下面的逻辑。这段代码工作起来非常快。
for (int i = 0; i < typo_word_vec.size(); i++)
{
float each_typo_word_len = (float)typo_word_vec[i].size();
int start_range = each_typo_word_len - floor((each_typo_word_len / lower_bound_word_size) * each_typo_word_len) - 1;
if (start_range < 1)
start_range = 1;
int end_range = each_typo_word_len + ceil((each_typo_word_len / upper_bound_word_size) * each_typo_word_len) + 1;
if (end_range > src_word_max_len)
end_range = src_word_max_len - 1;
call_get_dist(i, start_range, end_range);
}
但我不明白使用start_range
和end_range
背后的逻辑是什么。这里使用了什么底层算法或理论。
你真的应该多写几行——我们肯定需要检查整个代码才能理解一些东西。
据我所知,"源"字是按大小排列的。"候选"单词可能比其潜在匹配单词更短或更长。这就是start_range和end_range的用途。
尽管我很难理解作者为什么不使用
start_range = 0;
end_range = src_word_max_len;
编辑:好的,这只是他部分的优化(引用readme.txt):
我首先使用python和php解决了这个问题,然而,我的解决方案一直被拒绝,因为解决它需要太多时间(我的猜测)。在"cpp"目录中,我使用STL上传了我的c++解决方案,并最终接受了(算法的基本思想几乎相同:扫描源文件的扫描范围)目前,我计划下次使用java等其他语言尝试这个问题。可以在此处找到问题的说明:http://www.facebook.com/careers/puzzles.php?puzzle_id=17
他只是任意定义了一个足够大的范围,以便有足够高的概率在其中找到正确的匹配单词
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在java中解决这段代码时面临循环中的问题
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 读取最后一行代码算法 - c++ 时出现问题
- 这个带有模板<类 Vector 的C++代码片段有什么问题>
- Xcode 语义问题引用或以前定义的代码
- 需要以下代码的帮助,下面的代码有什么问题
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 如何在代码问题中解决此问题 代码强制
- C 代码问题?编译器问题?代码块
- C - 如果语句问题.代码将不会运行其他,否则
- 简单的NOOB C 输入/输出问题:代码错误
- NDK:0xdeadd00d时虚拟机中止和致命信号 11 (SIGSEGV) 的问题(代码 = 1)
- 编译问题 - 代码 C2129
- c++问题代码段
- 模板作用域问题代码无法编译
- 基本 CUDA 程序的问题.代码或编译器