代码理解问题

问题描述

| 我正在网上查看一个代码。 我不明白以下逻辑。此代码可以正常工作,并且运行非常迅速。
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);
}  
但是我不明白使用ѭ1和ѭ2背后的逻辑是什么。     

解决方法

您确实应该再发布几行-我们绝对需要检查整个代码以了解某些内容。 据我了解,“源”字按大小排序。 “候选”字可能比其潜在的匹配短或长。那就是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 他只是任意地定义一个范围,该范围要足够大,以便有足够的可能性在其中找到正确的匹配词。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...