- 论坛徽章:
- 0
|
请教文本处理:123与321合并为123
首先纠正一下我犯的错误:这一句并不能很好的起作用,因为它会将$a$a$a等情况也匹配在内,我还是把我的最终代码贴出来吧!
首先,我用下面的代码生成了一个1000000行的文件进行测试,
- #!/usr/bin/perl
- #file.pl
- ($count=shift) || ($count=1);
- foreach (1..$count) {
- printf("%03d\n",$_) foreach (0..999) ;
- }
复制代码
这个代码包含了所有可能的情况,我用file.pl 1000 >; test.txt导出到文件中
接着我用下面的代码进行测试
- #!/usr/bin/perl
- open (FILE,"test.txt");
- $hash{$_}++ while (chomp($_=<FILE>;));
- close FILE;
- while (($key,$value)=each%hash) {
- ($a,$b,$c)=split(//,$key);
- @tmp=("$a$c$b","$b$a$c","$b$c$a","$c$b$a","$c$a$b");
- foreach (@tmp) {
- $keys{$_}++ if (exists$hash{$_}) ;
- }
- foreach (keys%keys) {
- if ($_ ne $key) {
- $hash{$key}+=$hash{$_};
- delete $hash{$_};
- }
- }
- %keys=();
- print sort($a,$b,$c),",$hash{$key}\n";
- }
- ($sys,$user)=times;
- print $sys+$user;
复制代码
程序执行时间1.26s
测试环境:CPU:pentium4 1.5GHZ Mem:256M OS ebian Linux + perl 5.8.4
superdoctor,期待你的测试结果! |
|