需求
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题
分析
- 仅用字符串反转函数strrev
- 只用数组取位,比较将array_reverse之后的数组是否相等
- str_split 与 array_reverse结合处理
解法
/**
* @param Integer $x
* @return Boolean
* 此法时间最少
*/
function isPalindrome($x)
{
return $x == strrev($x);
}
// 不转字符串处理(用时较多)
function isPalindrome2($x)
{
if($x < 0){
return false;
}
$t = [];
while (true) {
$number = $x % 10;
array_push($t, $number);
if (floor($x / 10) == 0) {
break;
}
$x = floor($x / 10);
}
return array_reverse($t) == $t ;
}
// 字符串转数组处理(次之)
function isPalindrome3($x)
{
if($x < 0){
return false;
}
$t = str_split($x);
return array_reverse($t) == $t ;
}