系列中最大的5位数字

问题描述 投票:3回答:3

几天来我一直在努力解决以下问题,我无法解决这个问题:

以下10位数字中的数字:

1234567890

67890是5个连续数字的最大序列。

完成解决方案,使其返回最大的五个序列在给定的数字内找到连续的数字。该号码将是以仅数字的字符串形式传入。它应该返回一个五位数整数。传递的数字可能多达1000位数。

到目前为止,我一直在尝试将字符串拆分为数组($arr = str_split($s);),并使用for循环迭代整个过程。

接下来的步骤(反复遍历五个值,将其保存为变量,检查变量,如果不是最高值,则将其丢弃)对我来说绝对是个谜。

我曾尝试通过Stackoverflow寻找有用的建议,但未能找到关于该主题的任何信息。如果我错了,我深表歉意。

php for-loop
3个回答
0
投票

我通过使用substr尝试过

$fullNumber = 1234567890;
$biggestNumber = 0;

for ($i = 0; $i <= 5; $i++) {
    $nextNumber = substr($fullNumber, $i, 5);
    if ($nextNumber > $biggestNumber) {
        $biggestNumber = $nextNumber;
    }
}

echo $biggestNumber;

0
投票

请在下面考虑您的数字字符串:

$str = '123456789012345678901234567890';

使用一个变量来存储最大数字,而不是通过循环,您将获得5位数字的子字符串并将其存储在$ greatest_number变量中。

$greatest_number =  0;

for($i=0;$i < strlen($str) - 5;$i++){
  $substr = (int)substr($str,$i,5);

  if($greatest_number < $substr){
    $greatest_number = $substr;
  }

}

0
投票

使用递归。在php中,简单的4行代码将起作用。

<?php
d("1234567890");
function sol(d){
    if(strlen(d) <=5) return d;
    echo max(substr(d,5)), sol(substr(d,1));
}
?>

-1
投票

substr()应该可以解决问题。

echo substr('123456', 1);     // 2345
echo substr('123456', 1, 3);  // 234
echo substr('123456', 0, 4);  // 1234
echo substr('123456', 0, 8);  // 123456
echo substr('123456', -1, 1); // 6

您可以执行以下操作使其成为变量:

$total = 1234567890;
$substr = substr($total, -5);

echo $substr; // 67890

文档:

https://www.php.net/manual/en/function.substr.php

© www.soinside.com 2019 - 2024. All rights reserved.