逻辑算法考察
解题方法:
就像做数学题一样
找到要处理的数组或者字符串的规律,也可能是一个数列的规律,如果要求使用伪代码实现,建议先说明规律,然后白话说明解题步骤即可。
<?php
//1,1,2,3,5,8,13...求第30位数是多少
$arr = [1,1];
for($i=2;$i<30;$i++)
{
$arr[$i] = $arr[$i-1] + $arr[$i-2];
}
var_dump($arr);
//请写出一个函数,实现以下功能:字符串“open_door”,"make_by_id"转换成"OpenDoor","MakeById"
function turn($a)
{
$c = '';
$b = explode("_",$a);
foreach($b as $val)
{
$c .= ucfirst($val);
}
return $c;
}
var_dump(turn("open_door"));
var_dump(turn("make_by_id"));
模拟内置函数
//不使用php函数,用方法写一个反转字符串的函数
//abcdefg -> gfedcba
function str_rev($str)
{
for($i=0;true;$i++)
{
if(!isset($str[$i]))
{
break;
}
}
$return = '';
for($j=$i-1;$j>=0;$j--)
{
$return .= $str[$j];
}
return $return;
}
echo str_rev('abcdefg');
//写一个函数,要求不使用array_merge完成多个数组的合并
function merge()
{
$return = [];
$arrays = func_get_args();
foreach($arrays as $arr)
{
if(is_array($arr))
{
foreach($arr as $val){
$return[] = $val;
}
}
}
return $return;
}
var_dump(merge([1],[2,3,4]));