一個檔案有30w條資料!每行一個資料
同行詞!例如post stop tops這樣的是同行詞你用什麼辦法把裡面的所有這樣數據找出來
求個思想
使用linux指令來完成需求。例
统计文件夹下包含Action( 数量 grep Action\( ~/www/pms/app/app/controllers/*.php | wc -l
我的建議是寫一個特別的排序演算法,然後用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行到尾遍歷排序的數據,判斷本行和上一行是否一致,是:輸出,不是,向下走。
大概吧。隨手寫的
雷雷
使用linux指令來完成需求。例
我的建議是寫一個特別的排序演算法,然後用usort來排序,這樣同儕詞都排在一起了,然後依序輸出
排序演算法大致的邏輯是
1、排序30w行的數據,使用usort + 上面cmp函數
2、從第2行到尾遍歷排序的數據,判斷本行和上一行是否一致,是:輸出,不是,向下走。
大概吧。隨手寫的
雷雷