题目描述
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
示例
示例 1:
输入:x = 121 输出:true
示例 2:
输入:x = -121 输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10 输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
提示:
-231 <= x <= 231 - 1
进阶:
你能不将整数转为字符串来解决这个问题吗?
解题思路
- 根据回文数的特点,我们可以知道负数或类似10、100、1000肯定不是回文数
- 我们可以利用反转比较的思路解题,也就是:反转后半部分的数字,和前半部分做比较
- 注意前半部分和后半部分刚好相等的情况(1221)或正好差一位的情况(121)
AC代码
func isPalindrome(x int) bool { // 如果是类似10、100、1000或者负数就直接返回false if x < 0 || (x != 0 && x %10 == 0) { return false } // 反转比较 var right int for x > right{ right = right*10 + x%10 x /= 10 } return x == right || x == right/10 }
运行结果
总结
“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。