【发布时间】:2022-01-14 19:56:11
【问题描述】:
我真的被困在这个代码战挑战中:https://www.codewars.com/kata/515de9ae9dcfc28eb6000001/train/php。我觉得我很接近,但我不确定我在这一点上做错了什么。到目前为止,这是我的代码:
function solution($str) {
$newStr = "";
strlen($str) % 2 === 0 ? $newStr = $str : $newStr = $str.'_';
$arr = str_split($newStr, 2);
$finalArr = [];
for ($i = 0; $i < count($arr); $i++) {
if ($i % 2 !== 0) {
array_push($finalArr, $arr[$i-1], $arr[$i], $arr[$i+1]);
}
}
return $finalArr;
}
这是我在输出中遇到的错误:
Failed asserting that two arrays are equal.
Expected: Array (
0 => 'ab'
1 => 'cd'
2 => 'ef'
3 => 'g_'
)
Actual : Array (
0 => 'ab'
1 => 'cd'
2 => 'ef'
3 => 'ef'
4 => 'g_'
5 => null
)
更新:所以我做了另一个编辑,让我更接近解决这个问题。我还添加了挑战本身的链接,对于最初没有这样做,我深表歉意。代码如下:
function solution($str) {
$newStr = "";
strlen($str) % 2 === 0 ? $newStr = $str : $newStr = $str.'_';
$arr = str_split($newStr, 2);
$finalArr = [];
for ($i = 0; $i <= count($arr); $i++) {
if ($i % 2 !== 0) {
array_push($finalArr, $arr[$i-1], $arr[$i]);
}
}
return $finalArr;
}
这是我现在得到的输出:
Failed asserting that two arrays are equal.
Expected: Array (
0 => 'ab'
1 => 'cd'
2 => 'ef'
)
Actual : Array (
0 => 'ab'
1 => 'cd'
2 => 'ef'
3 => null
)
【问题讨论】:
-
我们应该如何猜测这个挑战的要求是什么?
-
我猜你说的是codewars.com/kata/515de9ae9dcfc28eb6000001/discuss。由于您已经有一个由 1 个或 2 个字符串组成的数组,因此您正在做一些不必要的工作。我建议检查最后一个值的长度,看看它是一个还是两个字符