我试图确定数组中是否存在三个连续的整数。我已经在几个PHP沙箱网站上测试了代码,但由于他们不允许使用fgets,我已经使用预先填充了5个整数的数组进行了测试。代码在这些情况下工作得很好,但是当用一个由用户输入填充的数组运行时,它会失败。我不确定问题出在哪里,但我们将非常感谢任何帮助。
<?php
echo "Enter 5 Numbers:";
//{Write your code here
$arr = array();
for($i = 0; $i < 5; $i++){
$arr[$i] = trim(fgets(STDIN));
}
sort($arr);
function FindSeq($arr){
for($i = 0; $i < 3; $i++){
while($i < 3) {
$a = $i;
$b = $a + 1;
$c = $b + 1;
if(((($arr[$a]) + 1) === $arr[$b]) && ((($arr[$b]) + 1) === $arr[$c]) !== FALSE) {
exit("true");
}
else {
$i++;
}
}
}
}
FindSeq($arr);
echo "false";
?>
答案 0 :(得分:0)
这些行以字符串形式读入,但是添加+ 1
会将其转换为整数。然后使用严格的比较===
和字符串。使用松散比较==
或将值转换为整数:
$arr[$i] = (int)trim(fgets(STDIN));
答案 1 :(得分:0)
这是一种快速的方法:
for($i = 2; $i=count($arr)-2; $i++)
if(($arr[$i-1] == $arr[$i]+1) && ($arr[$i+1] == $arr[$i] + 1))
return true;
return false;
循环编号说明您使用$ arr [1]作为数组的第一个元素。更漂亮的东西会更通用。