php几个小试题

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;
     }

你可能感兴趣的:(php)