PHP实现回文数
PHP实现回文数的方法
回文数是指正读和反读都相同的数字或字符串。以下是几种在PHP中实现回文数检测的方法。
方法1:使用字符串反转
将数字转换为字符串,反转后与原字符串比较是否相同。
function isPalindrome($num) {
$str = strval($num);
return $str === strrev($str);
}
// 示例
$number = 121;
if (isPalindrome($number)) {
echo "$number 是回文数";
} else {
echo "$number 不是回文数";
}
方法2:不使用字符串反转
通过数学方法逐位比较数字的首尾位。
function isPalindromeMath($num) {
if ($num < 0) return false;
$original = $num;
$reversed = 0;
while ($num > 0) {
$reversed = $reversed * 10 + $num % 10;
$num = (int)($num / 10);
}
return $original === $reversed;
}
// 示例
$number = 12321;
if (isPalindromeMath($number)) {
echo "$number 是回文数";
} else {
echo "$number 不是回文数";
}
方法3:递归实现
使用递归方式检测回文数。
function isPalindromeRecursive($str) {
if (strlen($str) <= 1) return true;
if ($str[0] !== $str[strlen($str) - 1]) return false;
return isPalindromeRecursive(substr($str, 1, -1));
}
// 示例
$number = "1221";
if (isPalindromeRecursive($number)) {
echo "$number 是回文数";
} else {
echo "$number 不是回文数";
}
方法4:优化字符串比较
使用循环逐个字符比较,避免完全反转字符串。
function isPalindromeOptimized($str) {
$len = strlen($str);
for ($i = 0; $i < $len / 2; $i++) {
if ($str[$i] !== $str[$len - $i - 1]) return false;
}
return true;
}
// 示例
$number = "123321";
if (isPalindromeOptimized($number)) {
echo "$number 是回文数";
} else {
echo "$number 不是回文数";
}
注意事项
- 字符串方法适用于数字和字符串,数学方法仅适用于数字。
- 递归方法在处理长字符串时可能导致栈溢出。
- 数学方法效率较高,适用于大数字处理。







