几天来我一直在努力解决以下问题,我无法解决这个问题:
以下10位数字中的数字:
1234567890
67890
是5个连续数字的最大序列。完成解决方案,使其返回最大的五个序列在给定的数字内找到连续的数字。该号码将是以仅数字的字符串形式传入。它应该返回一个五位数整数。传递的数字可能多达1000位数。
到目前为止,我一直在尝试将字符串拆分为数组($arr = str_split($s);
),并使用for循环迭代整个过程。
接下来的步骤(反复遍历五个值,将其保存为变量,检查变量,如果不是最高值,则将其丢弃)对我来说绝对是个谜。
我曾尝试通过Stackoverflow寻找有用的建议,但未能找到关于该主题的任何信息。如果我错了,我深表歉意。
我通过使用substr尝试过
$fullNumber = 1234567890;
$biggestNumber = 0;
for ($i = 0; $i <= 5; $i++) {
$nextNumber = substr($fullNumber, $i, 5);
if ($nextNumber > $biggestNumber) {
$biggestNumber = $nextNumber;
}
}
echo $biggestNumber;
请在下面考虑您的数字字符串:
$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;
}
}
使用递归。在php中,简单的4行代码将起作用。
<?php
d("1234567890");
function sol(d){
if(strlen(d) <=5) return d;
echo max(substr(d,5)), sol(substr(d,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
文档: