码迷,mamicode.com
首页 > 编程语言 > 详细

PHP(3)“判断回文数”算法问题

时间:2018-09-06 16:11:58      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:函数   array   span   rev   style   一半   ima   alt   算法   

  原题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

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

 

PHP(3)“判断回文数”算法问题

标签:函数   array   span   rev   style   一半   ima   alt   算法   

原文地址:https://www.cnblogs.com/qiuergou/p/9598448.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!