原题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
eg:
class test { public function a3($number) { $num = $number;
//输入的一个字符串,str_split分割为数组,判断数组第一个是否为“-”,如果为负数,一定不是回文数,也可加一个可否被10整除的判断 $num_arr = str_split($num); if ($num_arr[0] == '-') { return 0; } else {
//定义back_num为$number反序,同理分割为数组 $back_num = strrev($number); $back_arr = str_split($back_num); $length = count($back_arr);
//判断$num_arr与$back_arr的数组中的第i个是否一样 for ($i=0; $i < $length; $i++) { if ($num_arr[$i] != $back_arr[$i]) { return 0; } } echo $number; return $number; } } }
如果是回文数,则输出,否,则返回false。
这个我感觉是最容易理解的一种方法,也是最简单粗暴的,上面代码也可以用array_map这个函数,不过我感觉整体思路一样。
当然还有另外一种思路,回文数这个东西,它是一串有特点的数,如果一个整数为回文数,那么它的前半部分与后半部分是一样的,所以其实咱们可以遍历输入整数长度的一半即可,具体看代码
class test { public function a5($number) {
//老规矩。。跟上面的一样 $num = $number; $num_arr = str_split($num); if($num_arr[0] == '-') { return 0; } else { $length = count($num_arr);
//定义$mid为当前数组长度的一半,如果长度为奇数,向下取整 $mid = floor($length/2); for ($i=0; $i < $mid; $i++) {
//如果num_arr中,第i个与第length-1-i个都一样的话,就是回文数了,输出回文数 if ($num_arr[$i] != $num_arr[$length-1-$i]) return false; } echo $num; return $num; } } }