题目描述
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例:
1 2 3 4 5 6 7 8 9 10 11
| 输入: 121 输出: true
输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
|
思路
- 最好理解的一种解法就是先将 整数转为字符串 ,然后将字符串分割为数组,只需要循环数组的一半长度进行判断对应元素是否相等即可。
- 类似前面的整数反转,将反转之后的数字与之前的作比较。
代码
PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
function isPalindrome($x) { return strrev($x) == $x; }
function isPalindrome($x) { $n = $x; $reverse = 0; while ($n > 0) { $reverse = $reverse * 10; $reverse = $reverse + $n % 10; $n = (int)($n/10); }
return $x === $reverse; }
|
Golang
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| func isPalindrome(x int) bool { if x < 0 { return false }
var str = strconv.Itoa(x) for i := range str{ if str[len(str)-1-i] != str[i] { return false } } return true }
func isPalindrome(x int) bool { if x < 0 { return false } originX := x rev := 0 for x != 0 { pop := x % 10 x /= 10 rev = rev * 10 + pop } return originX == rev }
|