- 论坛徽章:
- 1
|
请教文本处理:123与321合并为123
- #!/usr/bin/perl
- open(FF,"in.txt");
- my %count = ();
- my %rem= ();
- my %num= ();
- while(<FF>;){
- chomp;
- $count{$_}++;
- }
- close(FF);
- my ($sys,$user) = times;
- print $sys+$user."\n";
- for my $key (keys %count){
- my $ary = join "", sort {$a <=>;$b } split(//,$key);
- $num{$ary}->;[0] +=$count{$key};
- push(@{$num{$ary}->;[1]},$key) ;
- }
-
- for my $key (keys %num){
- my ($min) = sort {$a <=>; $b} @{$num{$key}->;[1]};
- print "$min =>; $num{$key}->;[0] \n";
- }
-
- ($sys,$user) = times;
- print $sys+$user."\n";
复制代码
這個會快很多...大概只要17秒....讀文件的時間最長....
如果一次讀進ram裡面保證可以再快很多..但是RAM要吃掉1G...:<
我的nb沒那麼多RAM...所以跑得很慢...
如果真的要求效率..文件在讀進來之前最好能先sort再count一下...:)
這樣代碼會變得很簡單....:)效率也會很高... |
|