Changeset 880 for trunk/common/diff.php


Ignore:
Timestamp:
12/27/07 14:31:40 (4 years ago)
Author:
bogdanpasoi@…
Message:

Optimize LCS code.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/common/diff.php

    r878 r880  
    9696    $N = strlen($a); 
    9797    $M = strlen($b); 
    98     $C = array(array($N+1), array($M+1)); 
     98    $C = array(array(2), array($M+1)); 
    9999 
    100     for ($i = 0; $i <= $N; ++$i) { 
    101         $C[$i][0] = ""; 
    102     } 
    103     for ($i = 0; $i <= $M; ++$i) { 
    104         $C[0][$i] = ""; 
    105     } 
     100    for ($i = 0; $i < 2; ++$i) 
     101        for ($j = 0; $j <= $M; ++$j) 
     102            $C[$i][$j] = ""; 
     103     
    106104    for ($i = 1; $i <= $N; ++$i) { 
    107105        for ($j = 1; $j <= $M; ++$j) { 
    108106            if ($a[$i-1] == $b[$j-1]) { 
    109                 $C[$i][$j] = $C[$i-1][$j-1].$a[$i-1]; 
    110             } else if ($C[$i-1][$j] > $C[$i][$j-1]) { 
    111                 $C[$i][$j] = $C[$i-1][$j]; 
     107                $C[$i%2][$j] = $C[($i-1)%2][$j-1].$a[$i-1]; 
     108            } else if ($C[($i-1)%2][$j] > $C[$i%2][$j-1]) { 
     109                $C[$i%2][$j] = $C[($i-1)%2][$j]; 
    112110            } else { 
    113                 $C[$i][$j] = $C[$i][$j-1]; 
     111                $C[$i%2][$j] = $C[$i%2][$j-1]; 
    114112            } 
    115113        } 
    116114    } 
    117     return $C[$N][$M]; 
     115    return $C[$N%2][$M]; 
    118116} 
    119117 
Note: See TracChangeset for help on using the changeset viewer.