php 数组旋转
P粉043295337
P粉043295337 2023-09-03 14:08:19
0
1
544
<p>在这两个整数数组中,如何确定第二个数组是否是第一个数组的旋转版本以及需要哪个 php 函数?</p> <p>示例: 原始数组 A=[1,2,3,4,5,6,7,8] 旋转数组 B=[6,7,8,1,2,3,4,5]</p> <p>在此示例中,数组 A 的所有数字都向右旋转 5 个位置。</p>
P粉043295337
P粉043295337

全部回复(1)
P粉111627787

没有内置函数,但您可以旋转每个位置并比较是否正确。

$isRotated = function (array $original, array $maybeRotated): bool {
    $originalCount     = count($original);
    $maybeRotatedCount = count($maybeRotated);
    if ($originalCount !== $maybeRotatedCount || $original === $maybeRotated) {
        return false;
    }

    for ($i = 0; $i < $originalCount; $i++) {
        $original[] = array_shift($original);
        if ($original === $maybeRotated) {
            return true;
        }
    }

    return false;
};

echo $isRotated([1, 2, 3, 4, 5, 6, 7, 8], [6, 7, 8, 1, 2, 3, 4, 5]) ? 'true' : 'false', PHP_EOL;
echo $isRotated([1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 3, 4, 5, 6, 7, 8]) ? 'true' : 'false', PHP_EOL;
echo $isRotated([1, 2, 3, 4, 5, 6, 7, 8], [2, 3, 4, 5, 6, 7, 8, 1]) ? 'true' : 'false', PHP_EOL;

输出

true
false
true
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!