X7ROOT File Manager
Current Path:
/home/gfecatvj/sites/realesbar/vendor/sebastian/diff/src
home
/
gfecatvj
/
sites
/
realesbar
/
vendor
/
sebastian
/
diff
/
src
/
📁
..
📄
Chunk.php
(1.61 KB)
📄
Diff.php
(1.16 KB)
📄
Differ.php
(9.31 KB)
📁
Exception
📄
Line.php
(847 B)
📄
LongestCommonSubsequenceCalculator.php
(572 B)
📄
MemoryEfficientLongestCommonSubsequenceCalculator.php
(2.08 KB)
📁
Output
📄
Parser.php
(2.91 KB)
📄
TimeEfficientLongestCommonSubsequenceCalculator.php
(1.76 KB)
Editing: TimeEfficientLongestCommonSubsequenceCalculator.php
<?php declare(strict_types=1); /* * This file is part of sebastian/diff. * * (c) Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace SebastianBergmann\Diff; final class TimeEfficientLongestCommonSubsequenceCalculator implements LongestCommonSubsequenceCalculator { /** * {@inheritdoc} */ public function calculate(array $from, array $to): array { $common = []; $fromLength = \count($from); $toLength = \count($to); $width = $fromLength + 1; $matrix = new \SplFixedArray($width * ($toLength + 1)); for ($i = 0; $i <= $fromLength; ++$i) { $matrix[$i] = 0; } for ($j = 0; $j <= $toLength; ++$j) { $matrix[$j * $width] = 0; } for ($i = 1; $i <= $fromLength; ++$i) { for ($j = 1; $j <= $toLength; ++$j) { $o = ($j * $width) + $i; $matrix[$o] = \max( $matrix[$o - 1], $matrix[$o - $width], $from[$i - 1] === $to[$j - 1] ? $matrix[$o - $width - 1] + 1 : 0 ); } } $i = $fromLength; $j = $toLength; while ($i > 0 && $j > 0) { if ($from[$i - 1] === $to[$j - 1]) { $common[] = $from[$i - 1]; --$i; --$j; } else { $o = ($j * $width) + $i; if ($matrix[$o - $width] > $matrix[$o - 1]) { --$j; } else { --$i; } } } return \array_reverse($common); } }
Upload File
Create Folder