python - php查找算法
phpcn_u1582
phpcn_u1582 2017-05-16 13:02:53
0
3
464

一个文件有30w条数据!每行一个数据

同行词!比如post stop tops这样的是同行词
你用什么办法把里面的所有这样数据找出来

求个思想

phpcn_u1582
phpcn_u1582

全部回复(3)
phpcn_u1582

使用linux命令来完成需求。例子

统计文件夹下包含Action( 数量
grep Action\( ~/www/pms/app/app/controllers/*.php | wc -l
PHPzhong

我的建议是写一个特别的排序算法,然后用usort来排序,这样同行词都排在一起了,然后依序输出

排序算法大致的逻辑是

int cmp($left, $right) {
   //如果长度都不一致,直接放弃
   if(strlen($left) != strlen($right))
       return strcmp($left, $right);
   //长度一致的,按照字符切分,统计,判断是否一致
   $arrleft = str_split($left);
   $arrright = str_split($right);
   $leftstat = array();
   $rightstat = array();
   foreach($arrleft as $char) {
        if(array_key_exists($char, $leftstat))
            $leftstat[$char]++;
        else
            $leftstat[$char]=0;
   }
   foreach($arrright as $char) {
        //逻辑类似
   }
   //比较两个数组的统计是否一致
   if(count(array_diff_assoc($leftstat, $rightstat)) == 0)
       return 0;
   else
       return strcmp($left, $right);
}

1、排序30w行的数据,使用usort + 上面cmp函数

2、从第2行到尾遍历排序的数据,判断本行和上一行是否一致,是:输出,不是,向下走。

大概吧。随手写的

Ty80

雷雷

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板