1.形如 “12321”, “789987” 的数字称为“回文”,请写一个尽可能高效/高可维护的函数来判断输入的数字是否为回文;
function isBack($num):bool {
$num_rev = strrev($num);
if ($num == $num_rev) {
return true;
}
return false;
}
2.Excel 的行计数为数字(左侧纵列,1、2、3、4 标记第 1、2、3、4 行),列计数为字母(表格区域上方横列,A、B、C、D 代表第 1、2、3、4 列,AA、AB 代表第 27、28 列等),请写一个函数,输入为数字 n(取值范围 1 - PHP_INT_MAX),输出为代表那一列的字幕字符串(既 1 → A,2 → B,27 → AA,...);
function showString($n):string {
$errand = 26; //公差,26个基本字母,逢26进1,如Z列+1是AA
$i = 1;
//判断字母有几位
while (($n -= pow($errand, $i)) > 0) {
$i++;
}
$n = $n + pow($errand, $i);
$yushu = $n % $errand;
$shang = ($n - $yushu) / $errand;
$list = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
];
$str = '';
//一位位拼接字母
for ($j = 1; $j <= $i; $j++) {
if ($i == $j) {
$str .= $list[$yushu - 1];
} else {
for ($k = 0; $k < $i - $j; $k++) {
$shang = $shang / $errand;
}
$str .= $list[ceil($shang)];
}
}
return $str;
}
3.一个数字数组里只有唯一一个元素是不同于别的元素,其余元素是两两相等如何得到这个元素
function uniqueEle($arr):int {
$arr_unique = array_flip(array_flip($arr));
$arr_double = array_sum($arr_unique) * 2;
$arr_sum = array_sum($arr);
return $arr_double - $arr_sum;
}