扫码关注官方订阅号
在这两个整数数组中,如何确定第二个数组是否是第一个数组的旋转版本以及需要哪个 php 函数?
示例: 原始数组 A=[1,2,3,4,5,6,7,8] 旋转数组 B=[6,7,8,1,2,3,4,5]
在此示例中,数组 A 的所有数字都向右旋转 5 个位置。
没有内置函数,但您可以旋转每个位置并比较是否正确。
$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
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
没有内置函数,但您可以旋转每个位置并比较是否正确。
$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;输出